C语言:练习 àì夳堔傛蜴生んèń 2023-10-14 11:09 59阅读 0赞 ## ![e731ca8449d34635908e5e3c8203deac.png][] ## ## 题一:九九乘法表 ## 在屏幕上输出9\*9乘法口诀表 %-d(加负号),在后面补空格; %2d,在前面补空格; %02d,在前面补0. #include <stdio.h> int main() { int i = 0; for (i = 1; i < 10; i++) { int j = 0; for (j = 1; j <= i; j++) { printf("%d*%d=%-2d ", j, i, j * i); } printf("\n"); } return 0; } ## 题二:最大值 ## 求10 个整数中最大值 #include <stdio.h> int main() { int arr[10] = { 0 }; int i = 0; int tmp = 0; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); } int max = 0; max = arr[0]; for (i = 0; i < 10; i++) { if (max <= arr[i]) { max = arr[i]; } } printf("%d\n", max); return 0; } ## 题三:求和 ## 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果 #include <stdio.h> int main() { int i = 0; float sum = 0.00f; for (i = 1; i <= 100; i++) { if (i % 2 == 0) { sum = (-1)*(1.0 / i) + sum; } else { sum = (1.0 / i) + sum; } } printf("%f\n", sum); return 0; } ## 题四:出现多少次 ## 编写程序数一下 1到 100 的所有整数中出现多少个数字9 #include <stdio.h> int main() { int i = 0; int count = 0; for (i = 1;i <= 100;i++ ) { if (i % 10 == 9 || i / 10 == 9) { count++; } } printf("%d\n", count ); return 0; } ## 题五:查找某个数 ## 编写代码在一个整形有序数组中查找具体的某个数 要求:找到了就打印数字所在的下标,找不到则输出:找不到。 #include <stdio.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int left = 0; int right = sizeof(arr)/sizeof(arr[0]) - 1; int min = (left + right) / 2; int k = 0; scanf("%d", &k); while (right >= left) { if (arr[min] > k) { right = min - 1; min = (left + right)/ 2; } else if (arr[min] < k) { left = min + 1; min = (left + right) / 2; } else { printf("找到了!\n%d\n", min); break; } } if (left > right) { printf("没有找到!"); } return 0; } ## 题六:猜数字 ## 猜数字 #include<stdlib.h> #include <stdio.h> #include <time.h> void menu1() { printf("***********************\n"); printf("***1.猜数字 0.退出***\n"); printf("***********************\n"); } void game() { int str = 0; int num = 0; srand((unsigned int)time(NULL)); str = rand()%100+1; //判断 while (1) { printf("输入猜测的数字(0--100)\n"); scanf("%d", &num); if (str > num) { printf("猜小了,接着猜!\n"); } else if (str < num) { printf("猜大了,接着猜!\n"); } else { printf("恭喜你猜对啦!\n"); break; } } } int main() { int input = 0; do { menu1(); printf("请输入:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出\n"); break; default: printf("输入格式错误,请重新输入\n"); break; } } while (input); return 0; } ## 题七:求和 ## 输入一个正整数n(1 ≤ n ≤ 109) 输出一个值,为求和结果。 #include <stdio.h> int main() { long long sum = 0; int n = 0; scanf("%d", &n); int i = 0; for (i = 1; i <= n; i++) { sum = i + sum; } printf("%ld\n", sum); return 0; } 等差数列求解 long用%ld;long long用%lld。 int main() { //等差数列求和公式 long long n = 0; scanf("%lld", &n); long long sum = 0; sum = (1 + n) * n / 2; printf("%lld\n", sum); return 0; } ## 题八:最大数 ## 小乐乐获得4个最大数,请帮他编程找到最大的数。 一行,4个整数,用空格分开。 一行,一个整数,为输入的4个整数中最大的整数。 #include <stdio.h> int main() { int arr[4] = {0}; int i = 0; for (i = 0; i < 4; i++) { scanf("%d", &arr[i]); } int max = arr[0]; for (i = 1; i < 4; i++) { if (max <= arr[i]) { max = arr[i]; } } printf("%d\n", max); return 0; } ## 题九:判断字母 ## KiKi想判断输入的字符是不是字母,请帮他编程实现。 多组输入,每一行输入一个字符。 针对每组输入,输出单独占一行,判断输入字符是否为字母, #include <stdio.h> int main() { char letter = 0; while (scanf(" %c", &letter) == 1)//记得清理缓冲区里的\n { if (letter >= 'A' && letter <= 'Z' || letter >= 'a' && letter <= 'z') { printf("%c is an alphabet.\n", letter); } else { printf("%c is not an alphabet.\n", letter); } //也可以在这加个getchar()来清理缓冲区 return 0; } ## 题十:网购 ## KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到, 如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折, 如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。 一行,四个数字,第一个数表示小明看中的衣服价格, 第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。 注:输入日期保证只有“双11”和“双12”。 一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱) #include <stdio.h> int main() { int flag = 0; double price = 0; int month = 0; int day = 0; double sum = 0; scanf("%lf %d %d %d", &price, &month, &day, &flag); if (month == 11 && day == 11) { sum = price * 0.7; if (flag == 1) { sum -= 50; } if (sum <= 0) { sum = 0; } } else if (month == 12 && day == 12) { sum = price * 0.8; if (flag == 1) { sum -= 50; } if (sum <= 0) { sum = 0; } } printf("%.2lf\n", sum); return 0; } ## 题十一:交换 ## 交换两个整数,实现一个函数来交换两个整数的内容。 #include <stdio.h> void Way(int* a, int* b) { int c = 0; c = *a; *a = *b; *b = c; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); Way(&a,&b); printf("%d %d\n", a, b); return 0; } ## 题十二:判断闰年 ## 函数判断闰年 实现函数判断year是不是润年。 #include <stdio.h> int Sense(int n) { if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) { return 1; } else return 0; } int main() { int i = 0; int n = 0; scanf("%d", &n); i = Sense(n); if (i == 1) { printf("是闰年!"); } else printf("不是闰年!"); return 0; } ## 题十三:判断素数 ## 函数判断素数 实现一个函数is\_prime,判断一个数是不是素数。 利用上面实现的is\_prime函数,打印100到200之间的素数。 #include <stdio.h> #include <math.h> int is_prime(int n) { int flag = 0; int j = 0; for (j = 2; j <= sqrt(n); j++) { if (n % j == 0) { flag = 1; break; } } return flag; } int main() { int n = 0; int i = 0; int a = 0; int b = 0; scanf("%d", &n); a = is_prime(n); if (a == 1) { printf("不是素数!\n"); } else { printf("是素数!\n"); } for (i = 100; i <= 200; i++) { b = is_prime(i); if (b == 0) { printf("%d\n", i); } } return 0; } ## 题十四:斐波那契数列 ## 计算斐波那契数 递归和非递归分别实现求第n个斐波那契数 输入:5 输出:5 输入:10, 输出:55 输入:2, 输出:1 非递归实现 #include <stdio.h> int main() { int num = 0; int arr[100] = {1,1}; int n = 0; scanf("%d", &n); if (n <= 2) { num = 1; } else { int j = 0; for (j=2 ;j <= n-1 ;j++) { arr[j] = arr[j - 1] + arr[j - 2]; num = arr[j]; } } printf("%d\n", num); return 0; } 递归实现 #include <stdio.h> int is_sum(int n) { int num = 0; if (n <= 2) { num = 1; } if(n > 2) num = is_sum(n-2) +is_sum(n-1); return num; } int main() { int n = 0; int a = 0; scanf("%d", &n); a = is_sum(n); printf("%d\n",a); return 0; } ## 题十五:实现次方 ## 递归实现n的k次方 编写一个函数实现n的k次方,使用递归实现。 #include <stdio.h> int Power(int n, int k) { int num = 0; if (k != 0) { num = n * Power(n ,k-1); } if (k == 0) num = 1; return num; } int main() { int n = 0; int a = 0; int k = 0; scanf("%d %d", &n, &k); a = Power(n,k); printf("%d\n", a); return 0; } ## 题十六:递归求和 ## 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19 输入:1729,输出:19 #include <stdio.h> int DigitSum(int n) { int sum = 0; if (n > 9) { sum = n % 10; n = n / 10; } else { return n; } sum =sum + DigitSum(n); return sum; } int main() { int n = 0; int a = 0; scanf("%d", &n); a = DigitSum(n); printf("%d\n", a); return 0; } ## 题十七:递归逆序 ## 字符串逆序(递归实现) 编写一个函数 reverse\_string(char\* string)(递归实现) 实现:将参数字符串中的字符反向排列,不是逆序打印。 要求:不能使用C函数库中的字符串操作函数。 比如 :char arr\[\] = "abcdef"; 逆序之后数组的内容变成:fedcba 非递归实现 #include <stdio.h> #include <string.h> void reverse_string(char* string) { int len = strlen(string); int tmp = 0; int left = 0; int right = len - 1; while (left < right) { tmp = string[left]; string[left] = string[right]; string[right] = tmp; left++; right--; } } int main() { char arr[] = "abcdef"; reverse_string(arr); printf("%s\n", arr); return 0; } 递归实现 #include <stdio.h> #include <string.h> void reverse_string(char* string) { int len = strlen(string); char tmp = *string; *string = *(string + len - 1); *(string + len - 1) = '\0'; if (strlen(string + 1) >= 2)//每次从下一个地址开始计算除去第一个还剩多少个 reverse_string(string + 1); *(string + len - 1) = tmp; } int main() { char arr[] = "abcdef"; reverse_string(arr); printf("%s\n", arr); return 0; } ## 写错的选择题 ## 在函数调用时,以下说法正确的是:( ) A.函数调用后必须带回返回值 B.实际参数和形式参数可以同名 C.函数间的数据传递不可以使用全局变量 D.主调函数和被调函数总是在同一个文件里 A:错误,函数可以没有返回值,如果没有返回值也就不需要待会任何结果 B:正确,形参和实参在不同的函数中,即不同的作用域,因此形参和实参可以同名 C:错误,可以使用全局变量传参 D:错误,不一定,函数的定义可以放在任意的文件中,使用时只需要包含头文件即可 ### 当然这些只是个人的见解,并不是最佳解,欢迎大家互相讨论! ### [e731ca8449d34635908e5e3c8203deac.png]: https://img-blog.csdnimg.cn/e731ca8449d34635908e5e3c8203deac.png
相关 C 语言练习分享 c语言的一些小练习,可以多思考,多看看 1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100 define _CR... 心已赠人/ 2024年04月17日 11:39/ 0 赞/ 73 阅读
相关 C语言:练习 ![c7267eaea5be4f8f8138b648012a94e0.png][]题一:宏实现计算偏移量 写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明 偏执的太偏执、/ 2023年10月14日 14:53/ 0 赞/ 51 阅读
相关 C语言:练习 ![6a7277307c8d403ebdea1fd7a5e848ec.png][]题一:单身狗 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个 悠悠/ 2023年10月14日 14:26/ 0 赞/ 48 阅读
相关 C语言:练习 ![378ecc7435ca463da653f7b4f53ad19c.png][] 题一:喝汽水 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少 缺乏、安全感/ 2023年10月14日 13:26/ 0 赞/ 56 阅读
相关 C语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 58 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 58 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 60 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 55 阅读
相关 顺序栈 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 赞/ 445 阅读
还没有评论,来说两句吧...