C 语言练习分享 心已赠人 2024-04-17 11:39 73阅读 0赞 > c语言的一些小练习,可以多思考,多看看 ## 1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100 ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <string.h> #include <math.h> void main() { //Sum=1-2+3-4+5-6+……+99-100 int sum=0; for (int i = 1; i <= 100; ++i) { if (i % 2 == 0) { sum -= i; } else { sum += i; } } printf("Sum=1-2+3-4+5-6+……+99-100=%d", sum);//结果为-50 } ## 2. 有无符号数比大小 ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <string.h> #include <math.h> void main() { int num1 = -10; unsigned int num2 = 5;//unsigned是无符号数的定义 //条件运算表达式 num1 + num2 > 0 ? printf(">0\n") : printf("<0\n");//格式:表达式?结果1:结果2; } ## 3. 数组的逆置 ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <stdlib.h> int main() { int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; int j = sizeof(a) / sizeof(a[0]) - 1; int tmp = 0; while (i < j) { //前后交换 tmp = a[i]; a[i] = a[j]; a[j] = tmp; //移动位置 i++; j--; } for (int i = 0; i <= sizeof(a) / sizeof(a[0])-1; i++) { printf("%d ", a[i]); } } ## 4. 数组的冒泡排列 ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <stdlib.h> int main() { int a[5] = { 2,5,6,3,-1 }; int n = sizeof(a) / sizeof(a[0]);//sizeof是计算数值存储变量的字节 for (int i = 0; i < n - 1; i++) //比较轮数 { for (int j = 0; j < n - 1 - i; j++) //比较两数的大小,如果后面的数比前面的数大,则互换一下位置 { if (a[j] > a[j + 1]) { int tmp = a[j + 1]; a[j + 1] = a[j]; a[j] = tmp; } } } for (int i = 0; i < n; i++)//打印数组 { printf("%d ", a[i]); } printf("\n"); return 0; } ## 5. 计算三列的平均数和统计没课的不及格数:a\[5\]\[3\] = \{ \{80,75,56\},\{59,65,71\},\{59,63,70\},\{85,45,90\},\{76,77,45\} \} ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <stdlib.h> int main() { //二维数组 float a[5][3] = { { 80,75,56},{ 59,65,71},{ 59,63,70},{ 85,45,90},{ 76,77,45} }; float sum = 0.0; float aver[3] = { 0 }; //数组第一列5个数的平均值的空数组 int num[3] = { 0 }; //不及格次数的空数组 for (int i = 1; i < 3; i++) { sum = 0;//每次循环的sum值都要初始化,清零 for (int j = 0; j < 5; j++) { sum += a[j][i]; if (a[j][i] < 60) //判断分数及格还是不及格 { num[i]++; } } aver[i] = sum / 5; } for (int i = 0; i < 3; i++) //统计平均数 { printf("%f\n", aver[i]); } for (int i = 0; i < 3; i++) //统计次数 { printf("%d\n", num[i]); } } ## 6. 数组(寻找\\0的下标) ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <stdlib.h> int main() { char buf[128] = "helloA"; int i = 0; while (buf[i] != '\0')//有几个元素不等于0 { i++; } printf("i=%d\n", i); buf[i - 1] = '\0';//使最后一个元素等于\0 printf("%s", buf); system("pause"); return 0; } ## 7. 字符数组的比大小 ## #define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /*定义两个空字符串*/ char str1[128] = ""; char str2[128] = ""; printf("请输入两个字符串:\n"); fgets(str1, sizeof(str1), stdin); /*stdin的意思是,从键盘获取(固定值)*/ fgets(str2, sizeof(str2), stdin); /*strlen()是测字符数组里面有多个元素,后面是使最后一个元素等于0, 也就是结束数组,0等于\0*/ str1[strlen(str1) - 1] = 0; str2[strlen(str2) - 1] = 0; printf("%s\n", str1); printf("%s\n", str2); /*第一种,写法用的是while,元素不能是\0和互不相等*/ int i = 0; while (str1[i] != 0 && str2[i] != 0) /*去掉if条件,直接加 && str1[i]==str2[i]*/ { if (str1[i] != str2[i]) break; i++; } /*第二种,用for*/ // for (int i= 1; str1[i] != 0 && str2[i] != 0 && str1[i] == str2[i]; i++) if (str1[i] > str2[i]) /*比较大小*/ { printf("str1>str2\n"); } else if (str1[i] < str2[i]) { printf("str1<str2\n"); } else { printf("str1==str2"); } } ## 8. 有个数组,找出第二大的数,并且打印出来(使用指针操作数组元素个数,不要使用\[ \])int a\[ \]=\{100,100,100,234,123,500,32,68,41,99,13,71\} ## #define _CRT_SECURE_NO_WARNINGS 1 //要写在第一行 #include "stdio.h" #include <math.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <iostream> int main() { int a[] = { 100, 100, 100, 234, 123, 500, 32, 68, 41, 99, 13, 71}; int size = sizeof(a) / sizeof(a[0]); // 计算数组的大小 int *ptr = a; // 指向数组的指针 int max = *ptr; // 假设第一个元素为最大值 int secondMax = *ptr; // 假设第一个元素为第二大的值 // 遍历数组,找出最大值和第二大的值 for (int i = 0; i < size; i++) //遍历数组 { if (*ptr > max) //*ptr是首元素地址,max是指针地址 { secondMax = max; max = *ptr; } else if (*ptr > secondMax && *ptr < max) { secondMax = *ptr; } ptr++; // 指针移动到下一个元素 } std::cout << "第二大的数是:" << secondMax << std::endl; return 0; } ## 9. 提取字符串 ## int main() { char buf[] = " hello world "; char num[128] = ""; char* start = buf;/*首元素地址*/ char* end = &buf[strlen(buf) - 1];/*字符串最后元素地址*/ while (*start == ' ' && *start != 0) { start++; } while (*end == ' ' && *end != 0) { end--; } printf("%d\n", end - start + 1);/*提取字符的元素个数*/ strncpy(num, start, end - start + 1);/*拷贝:将字符数组start拷贝至num,拷贝个数是end-start+1个*/ printf("num=%s\n", num); } ## 10. 字符串的前后替换 ## int main() { char buf[] = "abcdefg"; char* start = buf; char* end = &buf[strlen(buf) - 1]; while (end > start) { char ch = *end; * end = *start; *start = ch; end--; start++; } printf("%s\n", buf); } -------------------- > 谢谢大家的观看!
相关 C 语言练习分享 c语言的一些小练习,可以多思考,多看看 1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100 define _CR... 心已赠人/ 2024年04月17日 11:39/ 0 赞/ 74 阅读
相关 C语言:练习 ![c7267eaea5be4f8f8138b648012a94e0.png][]题一:宏实现计算偏移量 写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明 偏执的太偏执、/ 2023年10月14日 14:53/ 0 赞/ 52 阅读
相关 C语言:练习 ![6a7277307c8d403ebdea1fd7a5e848ec.png][]题一:单身狗 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个 悠悠/ 2023年10月14日 14:26/ 0 赞/ 49 阅读
相关 C语言:练习 ![378ecc7435ca463da653f7b4f53ad19c.png][] 题一:喝汽水 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少 缺乏、安全感/ 2023年10月14日 13:26/ 0 赞/ 58 阅读
相关 C语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 60 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 59 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 60 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 56 阅读
相关 顺序栈 C语言练习 include <stdio.h> define bool char define true 1 define false 0 忘是亡心i/ 2022年12月03日 05:16/ 0 赞/ 171 阅读
相关 C语言小练习 C语言小练习 最近朋友问了几道关于C语言的题目,所幸花了一个晚上写了以下,问题如下: 1.一只老鼠咬坏了账本,公式中\[\]代表被老鼠咬掉的地方。要想恢复下面的等式, 蔚落/ 2021年12月22日 12:19/ 0 赞/ 447 阅读
还没有评论,来说两句吧...