20151202 c语言小代码

1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。

例如:输入test.exe -a 1 2

执行1+2输出3

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char* argv[])
{
    int num1 = atoi(argv[2]);
    int num2 = atoi(argv[3]);
    int ret = 0;
    if (strcmp(argv[1], "-a") == 0)
    {
        ret = num1 + num2;
    }
    if (strcmp(argv[1], "-s") == 0)
    {
        ret = num1 - num2;
    }
    if (strcmp(argv[1], "-m") == 0)
    {
        ret = num1 * num2;
    }
    if (strcmp(argv[1], "-l") == 0)
    {
        ret = num1 / num2;
    }
printf("%d\n",ret);
    system("pause");
    return 0;
}

2.调整数组使奇数全部都位于偶数前面。

题目:

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

/*奇数位于数组的前半部分,所有偶数位于数组的后半部分。*/

int * sort_arr(int arr[], int len)
{
int left = 0;
int right = len - 1;
while(left < right)
{
int is_left = arr[left] % 2 ;
int is_right = arr[right] % 2 ;
if(is_left == 0 && is_right == 1)//左偶数右奇数
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
continue;
}
if(is_left == 1 )
{
left++;
}
if(is_right == 0)
{
right--;
}
}
return arr;
}

==================================================

【参考】

void swap(int *pa, int *pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
int start = 0;
int end = sz - 1;
while (start < end)
{
while ((start < end) && arr[start] % 2 != 0)
{
start++;
}
while ((start < end) && arr[end] % 2 == 0)
{
end--;
}
if (start < end)
{
swap(arr + start, arr + end);
start++;
end--;
}
}
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}

==================================================

3.写冒泡排序可以排序多个字符串。

/*写冒泡排序可以排序多个字符串。*/

void swap_str(char *c1, char *c2)
{
char temp = *c1;
*c1 = *c2;
*c2 = temp;
}
void S_paixu(char a[][30],int line)
{
int i = 0;
for(;i < line - 1;i++)
{
int j = 0;
for(;j < line - i - 1;j++)
{
if(strcmp(a[j],a[j+1]) > 0)
{
int k = 0;
while(k < 30)
{
swap_str(&a[j][k],&a[j+1][k]);
k++;
}
}
}
}
}

----------------------------------------有返回值类型----------

-----------------------

char (*S_paixu(char a[][30],int line))[30]//返回二维指针地址
{
int i = 0;
for(;i < line - 1;i++)
{
int j = 0;
for(;j < line - i - 1;j++)
{
if(strcmp(a[j],a[j+1]) > 0)
{
int k = 0;
while(k < 30)
{
swap_str(&a[j][k],&a[j+1][k]);
k++;
}
}
}
}
return a;
}
int main()
{
char arr[][30] = {"abfgg","abcdf","abcda"};
int i = 0;
char (*p)[30] = S_paixu(arr,3);
//S_paixu(arr,3);
for(;i < 3;i++)
{
//printf("%s  ",arr[i]);
printf("%s ",p[i]);//p[i]为二维数组对应每行的行地址
}
system("pause");
return 0;
}

----------------------------------------------------

【参考】

void bubble(char *arr[], int sz)
{
int i = 0;
int j = 0;
for (; i < sz - 1; i++)
{
for (; j < sz - 1 - i; j++)
{
if (strcmp(arr[j], arr[j + 1])>0)
{
char *tmp = arr[j];//交换地址
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
char *arr[] = { "abcdef", "aaaaa", "cbdef", "bbbbb" };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
bubble(arr, sz);
for (i = 0; i < sz; i++)
{
printf("%s\n", arr[i]);
}
system("pause");
return 0;
}

===================================================

4.编写函数判断当前的机器大端小端。

void check_big_little()
{
int i = 1;
if(*((char *)(&i)))
{
printf("little\n");
}
else
{
printf("big\n");
}
}

5.好好理解数组指针、指针数组。

时间: 2024-08-04 20:26:12

20151202 c语言小代码的相关文章

Linux下简单C语言小程序的反汇编分析

韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOOC相关课程而写的作业,如有疏漏,还请指出. 选了一门Linux内核分析课程,因为阅读内核代码中或多或少要涉及到At&T汇编代码的阅读,所以这里写下一个对一个简单C命令行程序的反汇编分析过程,一方面完成作业,另一方面当作练手.下面开始: 1.编写我们的C语言小程序 这里我们使用简单的例子,代码如下: 1

【C语言探索之旅】 第一部分第八课:第一个C语言小游戏

? 内容简介 1.课程大纲 2.第一部分第八课:第一个C语言小游戏 3.第一部分第九课预告: 函数 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文

C语言 小游戏之贪吃蛇

还记得非常久曾经听群里人说做贪吃蛇什么的,那时候大一刚学了C语言,认为非常难,根本没什么思路. 前不久群里有些人又在谈论C语言贪吃蛇的事了,看着他们在做,我也打算做一个出来. 如今大三,经过了这一年半的编程,如今认为这个C语言的贪吃蛇还是比較简单的,花的时间不非常多! 我认为主要是思路正确,基本上就米什么大的问题. 如今贴上我的代码和我的详解,希望大家多交流. 首先说下我这个贪吃蛇仅仅是一个简单的,游戏结束有2种可能:一碰墙,二自杀即蛇头碰到蛇身. 如有不好之处,请见谅把. 首先说下我这个贪吃蛇

一段小代码说明@property装饰器的用法

#coding:utf-8 """ 一段小代码说明@property装饰器的用法.__name是私有变量 外部不能通过foo.__name访问,但可以通过foo._Foo__name访问. 如果想通过点运算符设置和访问实例属性怎么办,@property派上用途了, 先将一个方法头上加上@property,这个方法就变成实例属性了,再加上这个@get_name.setter 装饰器(@属性名.setter)就可以通过赋值来设置属性. python北京周末培训班 https://

JavaScript自己模仿jQuery的一点小代码

function seter(sId) {    var obj = document.getElementById(sId);    return new function () {        var objN = obj;        this.html = function (sHtml) {            objN.innerHTML = sHtml;        };    };} 这样的代码有怎样的作用呢? 假如HTML代码中有如下的内容: <div id="S

iOS开发中一些有用的小代码

1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&qu

C语言小游戏设计报告

课程设计名称:贪吃蛇小游戏 专业班级:计科15-2 学号:150809229 姓名:XXX 一.设计目标 通过设计,培养学生对电脑的动手能力,使学生巩固<C语言程序设计>课程学习的内容,掌握编写程序的基本方法,强化对其的动手能力,可以独自完成程序的编写. 二.设计内容和要求 设计内容 编写贪吃蛇的小游戏,使其可以成功运行并且操作玩耍. 设计要求 1)源程序要有适当的注释,使程序便于阅读. 2)要有程序运行结果作为依据 三.程序流程 1.编写地图 运用函数,数组编写地图 2.相同的方法把蛇添加进

【processing】小代码

今天无意间发现的processing 很有兴趣 实现很简洁 void setup(){ } void draw(){ background(255); if(mouseX < width/2 && mouseY > height/2) { fill(0); rect(0,height/2,width/2,height/2); } } 这个小小的代码可以实现 当鼠标位于画布左下方时显示一个黑色的框 -----------------------------------------

C语言的代码内存布局详解

一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题. BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段:在采用段式内存管理的架构中,数据段(da