• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言(C&C++程序设计基础,电子科技大学MOOC)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
一、编程作业
1、在屏幕上输出“hello! welcome to computer world!”

提示:

  1. 注意所有符号都是英文,最后没有回车。

  2. 将要求输出字符串之外的所有printf或者cout的输出全部删除

  3. 将return 0;之前的getchar();或者system("pause");等暂停程序运行的输出都删除。

  4. 提交之前先在自己的开发环境下运行成功再拷贝到作业区提交。

  5. 输出的语句最好拷贝到程序中,避免不小心的键盘按键错误输入造成扣分。

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. 注意所有符号都是英文,最后没有回车。

  2. 将要求输出字符串之外的所有printf或者cout的输出全部删除

  3. 将return 0;之前的getchar();或者system("pause");等暂停程序运行的输出都删除。

  4. 提交之前先在自己的开发环境下运行成功再拷贝到作业区提交。

  5. 输出的语句最好拷贝到程序中,避免不小心的键盘按键错误输入造成扣分。

  6. 1.和2.后面有一个空格。

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 
                       
                    
                    

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
收集的C#面试大全--不断补充中发布时间:2022-07-13
下一篇:
PAT乙级1038统计同成绩的学生C++版发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap