企业微信网站建设方案模板下载,站长工具pr值查询,wordpress怎么插视频,雏鸟app网站推广目录
1、编写一个程序从1到100中#xff0c;所有出现9的个数
2、分数求和
3、10个整形数字中选出最大值
4、打印9*9的乘法口诀
5、字符串逆序
6、计算一个数的每位之和(递归实现)
7、递归实现n的K次方
8、写个冒泡排序#xff0c;把一个整形数组变成升序。
9、二进制…目录
1、编写一个程序从1到100中所有出现9的个数
2、分数求和
3、10个整形数字中选出最大值
4、打印9*9的乘法口诀
5、字符串逆序
6、计算一个数的每位之和(递归实现)
7、递归实现n的K次方
8、写个冒泡排序把一个整形数组变成升序。
9、二进制位移位
10、实现数组的逆序、初始化、打印
11、模拟实现strcpy函数
12、写一个函数Numberof1求出一个数二进制1的个数
13、求两个书的最大公倍数
14、将一句话的单词进行倒置标点不倒置
15、设计一个程序判断是大端存储还是小端存储
16、由a组成前n项之和 - 不考虑溢出
17、使用指针打印数组内容
18、列出100000以内的水仙花数
19、写一个函数交换字符串的每个字符
20、用C语言在屏幕上输出以下图案 1、编写一个程序从1到100中所有出现9的个数
int main()
{int i 0;int count 0;for(i0; i100; i){if(i%10 9){count;}if(i/10 9){count;}}printf(%d\n,count);return 0;
}
2、分数求和 计算1/1-1/21/3-1/41/5...... 1/99 - 1/100 的值打印出结果
int main()
{int i 0;double sum 0.0;int flag 1;for(i1; i100; i){sum flag*1.0/i;flag -flag;}printf(%lf\n,sum);return 0;
}
3、10个整形数字中选出最大值
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int i 0;int max arr[0];for(i1; i10; i){max (maxarr[i]?max:arr[i]);}printf(%d\n,max);return 0;
}
4、打印9*9的乘法口诀
int main()
{int i 0;int j 0;for(i1; i9; i){for(j1; ji; j){printf(%d*%d%-2d ,i,j,i*j);}printf(\n);}return 0;
}
5、字符串逆序 编写一个函数reverse_string(char* string) 实现:将参数字符串中的字符反向排列不是逆序打印。 要求:不能使用C函数库中的字符串操作函数
int my_strlen(char* str)
{int i 0;int count 0;while(str[i] ! \0){str;count;}return count;
}
void reverse_string(char* arr)
{int left 0;int right my_strlen(arr)-1;int tmp 0;while(leftright){tmp arr[left];arr[left]arr[right];arr[right]tmp;right--;left;}
}
int main()
{char arr[] abcdef;reverse_string(arr);printf(%s\n,arr);return 0;
}
6、计算一个数的每位之和(递归实现) 题目内容:写一个递归函数Digitsum(n)输入一个非负整数返回组成它的数字之和。 例如调用DigitSum(1729)则应该返回1729它的和是19输入:1729输出: 19
int DigiSum(int num)
{if(num9){return num%10DigiSum(num/10);}elsereturn num;
}
int main()
{int num 1729;printf(%d\n,DigiSum(num));return 0;
}
7、递归实现n的K次方 题目内容: 编写一个函数实现n的K次方使用递归实现。
double que(int n,int k)
{if(k 0){return 1.0;}else if(k0){return n*que(n,k-1);}elsereturn 1.0/(n*que(n,-k));
}
int main()
{int k 0;int n 0;scanf(%d %d,n,k);printf(%lf\n,que(n,k));return 0;
}
8、写个冒泡排序把一个整形数组变成升序。 要求写一个函数bubble_sort为冒泡排序 例如arr[] {9,8,7,6,5,4,3,2,1};变成arr[] {1,2,3,4,5,6,7,8,9};
void bubble_sort(int arr[],int sz)
{int i 0;//确定趟数for(i0; isz-1; i){int j 0;for(j0; jsz-1-i; j){if(arr[j] arr[j1]){int tmp arr[j];arr[j] arr[j1];arr[j1] tmp;}}}
}
int main()
{int arr[] {9,8,7,6,5,4,3,2,1};int sz sizeof(arr)/sizeof(arr[0]);int i 0;bubble_sort(arr,sz);for(i0; isz; i){printf(%d ,arr[i]);}return 0;
} 或者
void bubble_sort(int arr[],int sz)
{int i 0;int flat 1;//确定趟数for(i0; isz-1; i){int j 0;for(j0; jsz-1-i; j){if(arr[j] arr[j1]){int tmp arr[j];arr[j] arr[j1];arr[j1] tmp;flat 0;}}if(flat 1){break;}}
}
int main()
{int arr[] {9,8,7,6,5,4,3,2,1};int sz sizeof(arr)/sizeof(arr[0]);int i 0;bubble_sort(arr,sz);for(i0; isz; i){printf(%d ,arr[i]);}return 0;
}
9、二进制位移位 要求1.把a的二进制中的第5位置成1 2.把a的二进制中的第5位置成0
int main()
{int a 13;//把a的二进制中的第5位置位1a a | (14);printf(%d\n,a);//把a的二进制中的第5位置位0a a ~(14);printf(%d\n,a);return 0;
}
10、实现数组的逆序、初始化、打印
要求数组{123456789}
写一个函数完成数组的逆序写一个函数打印数组的每一位元素写一个函数完成数组全为0
void reverse(int arr[],int sz)
{int left 0;int right sz - 1;while(leftright){int tmp 0;tmp arr[right];arr[right] arr[left];arr[left] tmp;left;right--;}
}
void init(int arr[],int sz)
{int i 0;for(i0; isz; i){arr[i] 0;}
}
void print(int arr[],int sz)
{int i 0;for(i0; isz; i){printf(%d ,arr[i]);}printf(\n);
}
int main()
{int arr[] {1,2,3,4,5,6,7,8,9};int sz sizeof(arr) / sizeof(arr[0]);reverse(arr,sz);print(arr,sz);init(arr,sz);print(arr,sz);return 0;
}
11、模拟实现strcpy函数
要求
写一个函数my_strcpy模拟实现strcpy函数例如把arr1[] hello拷贝到arr[20] xxxxxxxxx中简单实现
void my_strcpy(char* dest,char* src)
{while(*src ! \0){*dest *src;dest;src;}*dest *src;
}
int main()
{char arr[20] xxxxxxxxxxxxxx;char arr2[] hello;my_strcpy(arr,arr2);printf(%s\n,arr);return 0;
}
通过改进为
#includeassert.h
void my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src ! NULL); //断言如果是NULL会有报错信息while(*dest *src) // 不仅可以实现把每个字符拷贝进去而且还可以把‘\0’也拷贝过去{;}
}
int main()
{char arr[20] xxxxxxxxxxxxxx;char arr2[] hello;my_strcpy(arr,arr2);printf(%s\n,arr);return 0;
}
再改进
#includeassert.h
char* my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src ! NULL); //断言如果是NULL会有报错信息char* ret dest;while(*dest *src) // 不仅可以实现把每个字符拷贝进去而且还可以把‘\0’也拷贝过去{;}return ret;
}
int main()
{char arr[20] xxxxxxxxxxxxxx;char arr2[] hello;;printf(%s\n,my_strcpy(arr,arr2));return 0;
}
12、写一个函数Numberof1求出一个数二进制1的个数
int Numberof1(int n)
{int count 0;while(n){if(n%2 1){count;}n / 2;}return count;
}
int main()
{int n 15;printf(%d\n,Numberof1(n));return 0;
}
以上的代码没有办法求负数改进后下面代码
int Numberof1(int n)
{int count 0;int i 0;for(i0; i32; i){if((n i) 1 1){count;}}return count;
}
int main()
{int n -1;printf(%d\n,Numberof1(n));return 0;
}
13、求两个书的最大公倍数
要求输入a和b求出最大公倍数m
int main()
{int a 0;int b 0;scanf(%d %d,a,b);int m ab?a:b;while(1){if((m%a 0) (m%b 0)){printf(%d\n,m);break;}else{m;}}return 0;
}
14、将一句话的单词进行倒置标点不倒置
要求输入I like beijing. 经过函数变为beijing. like I
#includestring.h
void reverse(char* left,char* right)
{while(leftright){char tmp 0;tmp *left;*left *right;*right tmp;left;right--;}
}
int main()
{char arr[100] {0};gets(arr);//三布翻转法int len strlen(arr);reverse(arr,arrlen-1); //先整体翻转//每个单词翻转char* start arr;while(*start){char* end start;while(*end ! *end !\0){end;}reverse(start,end-1);if(*end ){start end 1;}elsestart end;}printf(%s\n,arr);return 0;
}
15、设计一个程序判断是大端存储还是小端存储
什么大端小端:
大端(存储)模式是指数据的低位保存在内存的高地址中而数据的高位保存在内存的低地址中;小端(存储)模式是指数据的低位保存在内存的低地址中而数据的高位,保存在内存的高地址中。
int main()
{int a 1;char* pa (char*)a;if(*pa 1){printf(小端存储\n);}else{printf(大端存储\n);}return 0;
}
或者写成一个函数
int check_sys()
{int a 1;char* pa (char*)a;return *pa;//返回1表示小端返回0表示大端
}
int main()
{int ret check_sys();if(ret 1){printf(小端存储\n);}else{printf(大端存储\n);}return 0;
}
16、由a组成前n项之和 - 不考虑溢出
int main()
{int a 0;int n 0;scanf(%d %d,a,n);int i 0;int sum 0;int ret 0;for(i0; in; i){ret ret*10 a;sum sum ret;}printf(%d\n,sum);return 0;
}
17、使用指针打印数组内容 题目内容: 写一个函数打印ar数组的内容不使用数组下标使用指针。 arr是一个整形一维数组 用两种方法
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int *p arr;int sz sizeof(arr) / sizeof(arr[0]);int i 0;for(i0; isz; i){printf(%d ,*(pi));}return 0;}
第二种方法
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int *p arr;int sz sizeof(arr) / sizeof(arr[0]);int *pend arrsz-1;while(ppend){printf(%d ,*p);p;}return 0;}
18、列出100000以内的水仙花数
水仙花数是指一个n位数其各位数字的n次方之和等于该数本身如1531^35^33^3
#includemath.h
int main()
{int i 0;for(i0; i100000; i){//计算i的位数int n 0;int tmp i;while(tmp/10){n;tmp tmp/10;}//计算i的每一位的n次方和tmp i;int sum 0;while(tmp){//pow是用来求每一位的n次方的sum pow( tmp % 10, n);tmp tmp / 10;}if(sum i){printf(%d ,i);}}return 0;
}
19、写一个函数交换字符串的每个字符
要求分别用指针下标引用符和*指针的方式
指针下标引用符
#includestring.h
void reverse(char arr[])
{int len strlen(arr);int left 0;int right len-1;while(leftright){char tmp 0;tmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;}
}
int main()
{char arr[] hello word; reverse(arr);printf(%s\n,arr); return 0;
}
*指针的方式
#includeassert.h
#includestring.h
void reverse(char *arr)
{assert(arr !NULL);int len strlen(arr);char* left arr;char* right arrlen-1;while(leftright){char tmp 0;tmp *left;*left *right;*right tmp;left;right--;}
}
int main()
{char arr[] hello word; reverse(arr);printf(%s\n,arr); return 0;
}
20、用C语言在屏幕上输出以下图案
要求输入n7行时候打印如下图
7************************************
*************************************************
请按任意键继续. . .代码为
int main()
{int line 0;scanf(%d,line);int i 0;//打印上半部分for(i0;iline;i){//打印前半段空格int j 0;for(j0;jline-1-i;j){printf( ); }//打印后半段*for(j0;j2*i1;j){printf(*);}printf(\n);}//打印下半部分for(i0;iline-1;i){int j 0;for(j0;ji;j){printf( );}for(j0;j2*(line-1-i)-1;j){printf(*);}printf(\n);}return 0;
} C语言练习 | 初学者经典练习汇总
C语言初识(2) | 变量和常量
C语言初识(3) | 字符串 | 转译字符
C语言初识(4) | 顺序 | 选择 | 循环
C语言初识(5) | 函数 | 数组 | 操作符
C语言初识(6) | 关键字
C语言初识(7) | 指针| 结构体 | define
C语言初阶(8) | 选择结构 | if_else | switch
C语言初阶(9) | while | break | continue | getchar
C语言初阶(10) | 初识for循环 | 入门