在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、编程作业
1、在屏幕上输出“hello! welcome to computer world!”
提示:
1 #include <stdio.h> 2 3 int main() 4 { 5 printf("hello! welcome to computer world!"); 6 return 0; 7 } 2、多行打印 打印下面的3行数据: Please display these words: 1. press return keyboard to enter the game. 2. press esc keyboard to exist the game.
1 #include <stdio.h> 2 3 int main() 4 { 5 printf("Please display these words:\n\ 6 1. press return keyboard to enter the game.\n\ 7 2. press esc keyboard to exist the game."); 8 return 0; 9 } 第二种写法
1 /* 2 printf 的参数为不定参数 可以使用三对引号打印 3 函数原型 int printf ( const char * format, ... ); 4 */ 5 #include <stdio.h> 6 7 int main() 8 { 9 printf("Please display these words:\n" 10 "1. press return keyboard to enter the game.\n" 11 "2. press esc keyboard to exist the game."); 12 return 0; 13 } 3、明星捐款
某明星每年都会做慈善,小明统计了一下这个明星今年做了3次慈善,第一次捐助希望小学x万元,第二次捐助一个癌症患者y万元,第三次举办了慈善晚会,募捐z万元,其中有t万元是其他人捐助的。 请问,这个明星今年一共捐助了多少钱?(万元) 输入: 4个空格分开的正实数(单精度实数) 输出:总共捐款数(只输出数值,保留小数点后的小数2位) 如果输入不合法,则输出error 例如: 输入:3.2 5 7 5.5 输出:10.50 输入:5 -2 1 3 输出:error 输入:3 a 2 1 输出:error 1 #include <stdio.h> 2 3 int main() 4 { 5 float x,y,z,t; 6 int ret = scanf("%f%f%f%f",&x,&y,&z,&t); 7 if(ret != 4 || x<=0 || y<=0 || z<=0 || t<=0) 8 printf("error"); 9 else 10 printf("%.2f", x+y+z-t); 11 return 0; 12 } 4、发工资 小明每个月基本工资x元,还有奖金y元,每迟到1次扣奖金的50元。这个月迟到z次,最多将所有奖金扣完。 请问小明这个月领多少钱? 输入:3个正整数 输出:1个整数 如果输入不合法,则输出"error" 比如: 输入:3000 200 2 输出: 3100 输入:5600 500 3 输出:5950 输入:1000 -2 5 输出:error 输入: 2000 200 6 输出:2000 输入:8000 200 -3 输出: error 1 #include <stdio.h> 2 int main() 3 { 4 int x,y,z,t; 5 int ret = scanf("%d%d%d",&x,&y,&z); 6 7 if(ret != 3 || x<=0 || y<=0 || z<=0){ 8 printf("error"); 9 } 10 else{ 11 t = y-z*50; 12 if( t<0 ) t = 0; 13 printf("%d", x+t); 14 } 15 return 0; 16 } 5、闰年判断 题目内容: 输入一个1900-2200之间的年份, 判断这一年是不是闰年,是闰年输出yes,不是则输出no 闰年判断条件: 1、能整除4且不能整除100 2、能整除400 如果输入不合法,输出error 输入样例: 1900 输出样例: no 1 #include <stdio.h> 2 3 int main() 4 { 5 int y; 6 int ret = scanf("%d",&y); 7 if(ret != 1 || y<1900 || y>2200) 8 printf("error"); 9 else if(y%4==0&&y%100!=0||y%400==0) 10 printf("yes"); 11 else 12 printf("no"); 13 return 0; 14 } 6、百钱百鸡 题目内容: 一只公鸡值5钱, 一只母鸡值3钱, 三只小鸡值1钱, 现在用百钱买百鸡, 请问公鸡、母鸡、小鸡各多少只? 列举所有可能,从公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序 输出结果: a,b,c d,e,f ..... (a,d...对应公鸡数量,b,e...对应母鸡数量,c,f...对应小鸡数量) 1 #include <stdio.h> 2 int main() 3 { 4 int i,j,k; 5 for(i=0; i<=100/5; ++i){ 6 for(j=0; j<=100/3; ++j){ 7 k = 100 - i - j; //百鸡 8 if(k%3==0 && 100 == k/3 + i*5 + j*3) //百钱 9 printf("%d,%d,%d\n",i,j,k); 10 } 11 } 12 return 0; 13 } 1 #include <stdio.h> 2 int main() 3 { 4 int i,j,k; 5 for(i=0; i<=14; ++i){ // 根据j与i关系式 在j为0的情况下i最大14 6 /*100 = k + i + j; //百鸡 7 100 = k/3 + i*5 + j*3 //百钱 */ 8 9 j = (200-14*i)/8; //根据题目条件消元 10 k = (200+2*i)*3/8; //同上 11 12 if(k%3==0 && 100 == k + i + j && 100 == k/3 + i*5 + j*3) 13 printf("%d,%d,%d\n",i,j,k); 14 } 15 return 0; 16 } 7、猴子摘桃 题目内容: 一个猴子摘了些桃子, 第一天吃掉其中的一半然后多吃了1个, 第二天照此方法又吃掉了剩下桃子的一半加1个, 以后每天如此,直到第十天晚上,猴子发现只剩下了1个桃子, 请问猴子第一天总共摘了多少个桃子? 并反向打印每天所剩桃子数。 即a,b,c,d.....,sum 分别表示第九天剩余桃子,第八天剩余桃子,....,第一天剩余桃子,总桃子数。 比如,如果总桃子10个,第一天剩余10/2-1=4个,第二天剩余4/2-1=1个,根据题目要求应该输出第一天剩余桃子,总桃子分别为: 4,10 1 //2022版 解题代码 2 #include <stdio.h> 3 int main() 4 { 5 int day, remain = 1, n; 6 scanf("%d",&n); 7 for(day = n; day>0; --day) 8 { 9 remain = 2 * (remain + 1); 10 } 11 printf("%d", remain); 12 return 0; 13 } 1 #include <stdio.h> 2 int main() 3 { 4 int day = 10, remain = 1; 5 for(day =10; day>0; --day) 6 { 7 remain = 2 * (remain + 1); 8 if(day!=10) 9 printf(","); 10 printf("%d", remain); 11 } 12 return 0; 13 } 8、回文判断 题目内容: 回文测试:输入一30个字符以内的字符串,判断是否为回文;如果是,则打印"true";否则打印"false"。像"aba"这样的从左往右读与从右往左读一致就是回文。 输入样例1: ayzya 输出样例1: true 输入样例2: ayzy 输出样例2: false 1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 char str[31] = ""; 6 scanf("%s",str); 7 char *p1=str, *p2 = str+strlen(str)-1; 8 while(p1<p2 && *p1==*p2){ 9 p1++,p2--; 10 } 11 if(p1>=p2) 12 printf("true"); 13 else 14 printf("false"); 15 return 0; 16 } 9、结构排序
题目内容: 书有书名(字符串长度不超过50字节),价格(单精度实数),分类(正整数)。 书的结构定义如下: struct book { char name[50]; float price; int classification; }; 输入n本书(n<=100),及每本书的书名,价格和分类(空格分隔输入数据), 请分别根据价格递增顺序排序,如果价格相同,则按照书名(ASCII码)递增排序。 最后输出排序后的结果,每行一本书详细信息,按照:书名,价格(保留2位小数),分类由逗号分隔。 例子: 输入: 3 program 35 1 history 35 2 cloudy-computing 57 1 输出 history,35.00,2 program,35.00,1 cloudy-computing,57.00,1 1 //2022版 C 解题代码 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> //strcmp 头文件 5 6 #define M 50 7 typedef struct book{ 8 char name[M]; 9 float price; 10 int classification; 11 }book; 12 13 int main() 14 { 15 int n = 0; 16 book s[50], tmp; 17 int i, j, max; 18 19 scanf("%d",&n); //题目要求 20 21 for (i = 0; i < n; i++) 22 scanf("%s%f%d", s[i].name, &s[i].price, &s[i].classification); 23 24 //选择排序 25 for (i = 0; i < n-1; i++) 26 { 27 max = i; 28 for (j = i + 1; j <n; j++) 29 if ( s[j].price == s[max].price && 0 > strcmp( s[j].name,s[max].name ) //价格相等 比较字符串 30 || s[j].price < s[max].price) //或者比较价格 31 max = j; 32 if( max!=i ) //交换条件 33 { 34 tmp = s[i]; 35 s[i] = s[max]; 36 s[max] = tmp; 37 } 38 } 39 for (i = 0; i < n; i++) 40 printf("%s,%.2f,%d\n", s[i].name, s[i].price, s[i].classification); 41 return 0; 42 } 1 //2022版 C++ 解题代码 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 const int M = 50; 7 struct book 8 { 9 char name[M]; 10 float price; 11 int classification; 12 bool operator <(const struct book &b)const //运算符重载 13 { 14 if( b.price == price) 15 return 0 < strcmp( b.name,name); 16 return b.price > price; 17 } 18 }; 19 20 int main() 21 { 22 int n = 0; 23 book s[50], tmp; 24 int i, j, max; 25 26 cin >> n; //题目要求 27 28 for (i = 0; i < n; i++) 29 cin >> s[i].name >> s[i].price >> s[i].classification; 30 31 //选择排序 32 for (i = 0; i < n; i++) 33 { 34 max = i; 35 for (j = i + 1; j <n; j++) 36 if ( s[j] < s[max] ) //或者比较价格 37 max = j; 38 if( max!=i ) //交换条件 39 { 40 tmp = s[i]; 41 s[i] = s[max]; 42 s[max] = tmp; 43 } 44 } 45 for (i = 0; i < n; i++) 46 printf("%s,%.2f,%d\n", s[i].name, s[i].price, s[i].classification); 47 return 0; 48 } 9、设计数字时钟 题目内容: 按照下面要求定义一个时钟结构体类型: struct clock { int hour; int minute; int second; }; typedef struct clock CLOCK; 然后,编程实现将时钟模拟显示在屏幕上。注意:时钟是24小时的。需要判断输入的数据是否合法。 输入样例1: 10,20,3 输出样例1: 10:20:03 输入样例1: 25,100,200 输出样例2: error 1 #include <stdio.h> 2 #include <string.h> 3 4 struct clock 5 { 6 int hour; 7 int minute; 8 int second; 9 }; 10 typedef struct clock CLOCK; 11 12 int main() 13 { 14 CLOCK c; 15 int ret = scanf("%d,%d,%d",&c.hour,&c.minute,&c.second); 16 if(ret!=3 || c.hour>=24 || c.minute>=60 || c.second>=60){ 17 printf("error"); 18 } 19 else{ 20 printf("%02d:%02d:%02d",c.hour,c.minute,c.second); 21 } 22 return 0; 23 } 10、排序 题目内容: 接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个整数按升序排列输出,并且奇数在前,偶数在后。 输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格 输入样例1: 10 9 8 7 6 5 4 3 2 1 输出样例1: 1 3 5 7 9 2 4 6 8 10回车 输入样例2: 2 3 4 5 -1 输出样例2: 3 5 2 4回车 1 #include <stdio.h> 2 #include <string.h> 3 4 void InsertSort(int *arr, int n) 5 { 6 int i; 7 for(i=1; i<n; ++i){/*第0个元素有序,从第1个元素向右无序*/ 8 int j=i-1,key=arr[i];/*保存第i个元素,左边的元素i-1*/ 9 while(j>=0 && key<arr[j]){/*保存的元素key与之前的元素从右向左逐个比较*/ 10 arr[j+1]=arr[j];/*移动(向后赋值)*/ 11 j--; 12 } 13 arr[j+1]=key;/*j--退出,恢复正确值j+1*/ 14 } 15 } 16 17 int main() 18 { 19 int i=0,x,flag=0, arr[10]={0}; 20 21 scanf("%d",&x); 22 while(i<10 && x>0){ 23 arr[i++] = x; 24 scanf("%d",&x); 25 } 26 27 InsertSort(arr,i); 28 for(int j=0; j<i; ++j){ 29 if(arr[j]%2){ 30 if(flag) printf(" "); 31 flag = 1; 32 printf("%d",arr[j]); 33 } 34 } 35 36 for(int j=0; j<i; ++j){ 37 if(arr[j]%2==0) 38 printf(" %d",arr[j]); 39 } 40 41 return 0; 42 } 1 //2022版 解题代码 2 #include <stdio.h> 3 #include <string.h> 4 5 void InsertSort(int *arr, int n) 6 { 7 int i; 8 for(i=1; i<n; ++i){ /* 第0个元素有序,从第1个元素向右无序 */ 9 int j=i-1,key=arr[i];/*保存第i个元素,左边的元素i-1*/ 10 while(j>=0 && key<arr[j]){/*保存的元素key与之前的元素从右向左逐个比较*/ 11 arr[j+1]=arr[j];/*移动(向后赋值)*/ 12 j--; 13 } 14 arr[j+1]=key; /*j--退出,恢复正确值j+1*/ 15 } 16 } 17 18 int main() 19 { 20 int i=0,x,flag=0, arr[10]={0}; 21 22 scanf("%d",&x); 23 while( x>0 ){ 24 arr[i++] = x; 25 if( i>9 ) break 全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论