收藏 分销(赏)

大学C题库及答案.doc

上传人:丰**** 文档编号:9715837 上传时间:2025-04-04 格式:DOC 页数:109 大小:529KB 下载积分:18 金币
下载 相关 举报
大学C题库及答案.doc_第1页
第1页 / 共109页
大学C题库及答案.doc_第2页
第2页 / 共109页


点击查看更多>>
资源描述
Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。根据里氏强度地震的后果如下: 里氏强度 后果 小于4 很小 4.0到5.0 窗户晃动 5.0到6.0 墙倒塌;不结实的建筑物被破坏 6.0到7.0 烟囱倒塌;普通建筑物被破坏 7.0到8.0 地下管线破裂;结实的建筑物也被破坏 超过8.0 地面波浪状起伏;大多数建筑物损毁 **输入格式要求:实数, 提示信息:cout << "请输入地震的里氏强度: " << endl; **输出格式要求: "本次地震后果:很小!" "本次地震后果:窗户晃动!" "本次地震后果:墙倒塌;不结实的建筑物被破坏!" "本次地震后果:烟囱倒塌;普通建筑物被破坏!" "本次地震后果:地下管线破裂;结实的建筑物也被破坏!" "本次地震后果:地面波浪状起伏;大多数建筑物损毁!" #include <iostream> using namespace std; int main() {     double magnitude;        cout << "请输入地震的里氏强度: " << endl;     cin >> magnitude;        if (magnitude < 4.0)     {         cout << "本次地震后果:很小!" << endl;     }     else if (magnitude < 5.0)     {         cout << "本次地震后果:窗户晃动!" << endl;     }     else if (magnitude < 6.0)     {         cout << "本次地震后果:墙倒塌;不结实的建筑物被破坏!" << endl;     }     else if (magnitude < 7.0)     {         cout << "本次地震后果:烟囱倒塌;普通建筑物被破坏!" << endl;     }     else if (magnitude < 8.0)     {         cout << "本次地震后果:地下管线破裂;结实的建筑物也被破坏!" << endl;     }     else     {         cout << "本次地震后果:地面波浪状起伏;大多数建筑物损毁!" << endl;     }        return 0; } Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。根据用户输入的数字显示相应的星期几。如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。 **输入格式要求:整数, 提示信息:cout << "Please input a single numeral(1-7): "; **输出格式要求:"Monday" (星期几的英文单词首字母大写加换行) 提示信息:"Invalid - please input a single numeral(1-7)."(加换行) #include<iostream> using namespace std; int main() {     int a;     cout << "Please input a single numeral(1-7): ";     cin >> a;     if (a < 1 || a > 7)     {         cout << "Invalid - please input a single numeral(1-7)." << endl;     }     switch (a)     {     case 1:         cout << "Sunday" << endl;         break;     case 2:         cout << "Monday" << endl;         break;     case 3:         cout << "Tuesday" << endl;         break;     case 4:         cout << "Wednesday" << endl;         break;     case 5:         cout << "Thursday" << endl;         break;     case 6:         cout << "Friday" << endl;         break;     case 7:         cout << "Saturday" << endl;         break;     }     return 0; } Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。 **输入提示信息和数据格式:无 **输出提示信息和数据格式:cout << "百万富翁给陌生人:" << toStranger << "元" << endl; cout << "陌生人给百万富翁:" << toRichman << "元" << endl; #include <iostream> using namespace std; int main() {     int j;     double toStranger = 0;  /* 富翁给陌生人的钱,以'元'为单位 */     double toRichman = 0;   /* 陌生人给富翁的钱,以'元'为单位 */     double term = 0.01;     /* 富翁第一天给陌生人0.01元 */     for (j = 1; j <= 30; j++)     {         toRichman += 100000; /* 陌生人每天给富翁10万元 */         toStranger += term;         term = term * 2;      /* 富翁每天给陌生人的钱是前一天的两倍 */     }     cout << "百万富翁给陌生人:" << toStranger << "元" << endl;  cout << "陌生人给百万富翁:" << toRichman << "元" << endl;     return 0; } Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。 输出格式要求:cout<<"sum="<<sum<<endl; cout << "count =" << i << endl; 输出结果为: sum=1071225 count =45 #include <iostream> using namespace std; int main() {     long i, sum = 0;     for (i = 1; ; i++)     {         sum = sum + i * i * i;         if (sum >= 1000000)  break;     }     cout<<"sum="<<sum<<endl;     cout << "count =" << i << endl;     return 0; } Q9.(10分)求多项式 1!+2!+3!+……+15!的值。 输出格式要求:cout<<"s="<<s<<endl; #include<iostream> using namespace std; int main() {     int n = 1, s = 0;     for (int i = 1; i <= 15; i++)     {         n = n * i;         s += n;     }     cout << "s=" << s << endl;     return 0; }                                                                             Q10.(10分)求1至200之间的所有质数,将质数和存入变量 sum 中并输出。 质数(素数)的说明:“质数是只能被1和其本身整除的数”。 输入提示要求:无 输出结果格式要求:质数之间以一个空格隔开 输出所有质数后换行输出:sum=4227 #include<iostream> #include<cmath> using namespace std; int main() {     int N, m, sum = 0;     for (m = 2; m <= 200; m++)     {         int i, tmp = (int)sqrt(m);         for (i = 2; i <= tmp; i++)             if (m % i == 0)                 break;         if (i > tmp)         {             cout << m << " ";             sum += m;         }     }     cout << endl;     cout << "sum=" << sum << endl;     return 0; } Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。正数的个数存入变量C1中,负数个数存入变量C2中. 输出格式要求:cout << "c1=" << c1 << endl; cout << "c2=" << c2 << endl; #include <iostream> using namespace std; int main() {     int a[10] = {1, -2, 0, 4, -5, 0, 7, 8, -9, 10};     int c1 = 0, c2 = 0;     int i;     for (i = 0; i < 10; i++)         if (a[i] > 0)             c1++;         else if (a[i] < 0)             c2++;     cout << "c1=" << c1 << endl;     cout << "c2=" << c2 << endl;     return 0; } Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。 输出格式要求:cout << "最大元素:" << max << endl; cout << "最小元素:" << min << endl; #include <iostream> using namespace std; int main() {     int a[10] = {32, 43, 65, 23, 432, 543, 543, 54, 542, 87};     int i;     int max, min;     max = a[0], min = a[0];     for (i = 1; i < 10; i++)     {         if (a[i] > max) max = a[i];         if (a[i] < min) min = a[i];     }     cout << "最大元素:" << max << endl;     cout << "最小元素:" << min << endl;     return 0; } Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。 输出结果格式为:sum=166650 #include<iostream> using namespace std; int main() {     int i = 1, sum = 0;     while (i <= 100)     {         sum += i * i;         i += 2;     }     cout << "sum=" << sum << endl;     return 0; } Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是) 输出结果:0 #include<iostream> #include<cmath> using namespace std; int main() {     int m, n, flag = 1;     m = 23437;     for (n = 2; n <= m / 2 && flag; n++)         if (m % n == 0)flag = 0;     cout << flag << endl;     return 0; } Q15.(10分)已知一个数m(=252),用循环求各位数字之和。 输出结果格式:s=9 #include<iostream> using namespace std; int main() {     int m = 252, a, b, c, s;     a = m / 100;     b = m / 10 % 10;     c = m % 10;     s = a + b + c;     cout << "s=" << s << endl;     return 0; } Q16.(10分)已知一个数m(=252),用循环求各位数字之积。 输出结果格式:f=20 #include<iostream> using namespace std; int main() {    int m, f=1,n;    m=252;    while (m !=0)     {        n=m%10;        f*=n;        m=m/10;     }     cout<<"f="<<f<<endl;     return 0; } Q17.(10分)已知10个四位数输出所有对称数及个数n。例如1221,2332都是对称数。 设:int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234}; 输出结果:1221 2332 #include <iostream> using namespace std; int main() {     int i, n = 0, m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};     for (i = 0; i < 10; i++)     {         int a, b, c, d;         a = m[i] / 1000;         b = m[i] % 1000 / 100;         c = m[i] % 100 / 10;         d = m[i] % 10;         if (a == d && c == b)         {             cout << m[i] << endl;             n++;         }     }     return 0; } Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。 输出结果格式:n=225 #include<iostream> using namespace std; int main() {     int n = 0, i = 1;     while (n < 200)     {         n = n + i;         i++;         i++;     }     cout << "n=" << n << endl;     return 0; } Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。 输入格式要求:cout<<"请输入三个整数:"; 输出格式要求:cout<<"最大值是:"<<max<<endl; #include <iostream> using namespace std; int main( ) {     int a, b, c, t, max;     cout << "请输入三个整数:";     cin >> a >> b >> c;     if (a < b)     {         t = a;         a = b;         b = t;     }     if (a < c)     {         t = a;         a = c;         c = t;     }     max = a;     cout << "最大值是:" << max << endl;     return 0; } Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。 输入格式要求: cout << "请输入年份和月份:"; 输出格式要求:cout << year << "年" << month << "月" << "是" << day << "天。" << endl; #include<iostream> using namespace std; int main() {     int year, month, day;     cout << "请输入年份和月份:";     cin >> year >> month;     switch (month)     {     case 1:     case 3:     case 5:     case 7:     case 8:     case 10:     case 12:         day = 31;         break;     case 4:     case 6:     case 9:     case 11:         day = 30;         break;     case 2:         if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)             day = 29;         else             day = 28;         break;     }     cout << year << "年" << month << "月" << "是" << day << "天。" << endl;     return 0; } Q21.(10分) 编写程序,求解下面的分段函数: 输入格式要求: cout << "请输入x:"; 输出格式要求: cout << "y="<< y << endl; #include<iostream> using namespace std; int main() {     double x,y;     cout<<"请输入x:";     cin>>x;     if(x>-10&&x<0) y=x-8;     if(x==0)   y=x;     if(x>0&&x<10) y=x*x;     cout<<"y="<<y<<endl;     return 0; } Q22.(10分)用“辗转相除方法”计算两个数 x,y 的最大公约数。 输入格式要求:无,直接输入 输出格式要求:无,直接输出结果 #include<iostream> using namespace std; int main() {     int x, y, n;     cin >> x >> y;     n = x % y;     while (n != 0)     {         x = y;         y = n;         n = x % y;     }     cout << y << endl;     return 0; } Q23.(10分)利用选择法将下面10个数按降序排列。 有如下定义:int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7}; 输入格式要求:无 输出格式要求:以逗号分隔降序数列 #include<iostream> using namespace std; int main() {     int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7}, i, j, k, t;     for (i = 0; i < 9; i++)     {         k = i;         for (j = i + 1; j < 10; j++)             if (n[k] < n[j])                 k = j;         t = n[i];         n[i] = n[k];         n[k] = t;     }     for (j = 0; j < 10; j++)         cout << n[j] << ",";     return 0; } Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。 输入格式要求:无 输出格式要求:cout << "高于平均分的人数:" << k << endl; #include <iostream> using namespace std; int main() {     double cj[20], aver, sum = 0;     int n = 0, k = 0, i;     cin >> cj[0];     while (cj[n] >= 0)     {         sum += cj[n];         n++;         cin >> cj[n];     }     aver = sum /( n-1);     for (i = 0; i < n-1; i++)         if (cj[i] > aver) k++;     cout << "高于平均分的人数:" << k << endl;     return 0; } Q25.(10分)已知三个数a,b,c,按由小到大的顺序存入a,b,c中并输出. 输入格式要求:cout << "输入三个整数:"; 输出格式要求:cout << "由小到大的顺序是:" << a << "," << b << ","<<c<<endl; #include <iostream> using namespace std; int main() {     int a, b, c, t;     cout << "输入三个整数:";     cin >> a >> b >> c;     if (a > b)     {         t = a;         a = b;         b = t;     }     if (a > c)     {         t = a;         a = c;         c = t;     }     if (b > c)     {         t = b;         b = c;         c = t;     }     cout << "由小到大的顺序是:" << a << "," << b << ","<<c<<endl;     return 0;  } Q26.(10分)编程计算 sum=1!+2!+...+9!。 输入格式要求: 无 输出格式要求: cout <<"sum= " << sum << endl; #include<iostream> using namespace std; int main() {    int sum=0;    for (int i=1; i<=9; i++)    {       int x=1;       for (int j=1;j<=i;j++)          x=x*j;       sum=sum+x;    }    cout <<"sum= " << sum << endl;    return 0; } Q27.(10分)编写函数,删除字符串中的指定字符,函数原型为: void deletechar(char *string, char ch); 设char c[100] = "abcdabcd aabbccdd"; 输出结果:bcdbcd bbccdd #include<cstring> #include<iostream> using namespace std; void deletechar(char *string, char ch) {     int i(0), k(0);     while (string[i++] != '\0')         if (string[i] != ch)             string[k++] = string[i];     string[k] = '\0'; } int main () {     char c[100] = "abcdabcd  aabbccdd";     deletechar(c, 'a');     cout << c << endl;     return 0; } Q28.(10分)编写函数,将一个十进制无符号整数转换为二进制整数,函数原型为: void transform(char*p,long i,int base=2); #include <iostream> using namespace std; void transform(char*p, long i, int base = 2) {     int r(0), k(0);     char t[128];     while (i > 0)     {         r = i % base;         if (r < 10)             t[k] = r + 48;         else             t[k] = r + 55;         i = i / base;         k++;     }     k--;     r = 0;     while (k >= 0)     {         *(p + r) = t[k];         r++;         k--;     }     *(p + r) = '\0'; } int main() {     char c[256];     transform(c, 45678, 2);     cout << c << endl;     return 0; } Q29.(10分)输入10个学生的成绩,存放在一个一维数组中,求出总分和平均分。 输入提示信息格式要求: cout << "请输入学生的分数:"; 输出结果格式要求:cout << "学生的总分是:" << sum << endl; cout << "学生的平均分是:" << aver << endl; #include<iostream> #include<iomanip> using namespace std; int main() {     int a[10], sum, aver, i;     sum = 0;     cout << "请输入学生的分数:";     for (i = 0; i <= 9; i++)         cin >> a[i];     for (i = 0; i <= 9; i++)         sum = sum + a[i];     aver = sum / 10;     cout << "学生的总分是:" << sum << endl;     cout << "学生的平均分是:" << aver << endl;     return 0; } Q30.(10分)输入10个学生的成绩,存放在一个一维数组中,找出其中的最高分和所对应的学生。 输入提示信息格式要求:cout << "请输入学生的分数:"; 输出提示信息格式要求:cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl; #include<iostream> using namespace std; int main() {     int a[10], max, i, n;     cout << "请输入学生的分数:";     for (i = 0; i <= 9; i++)         cin >> a[i];     max = a[0];     for (i = 1; i <= 9; i++)         if (max < a[i])         {             max = a[i];             n = i;         }     cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl;     return 0; } Q31.(10分)求一个3×3矩阵的对角线元素之和。 输入提示信息格式要求: cout << "请输入3行3列矩阵的元素:" << endl; 输出提示信息格式要求: cout << "请输出这个3行3列的矩阵:" << endl; cout << "对角线元素之和为:" << sum << endl; #include<iostream> #include<iomanip> using namespace std; int main() {     double a[3][3], sum = 0;     int i, j;     cout << "请输入3行3列矩阵的元素:" << endl;     for (i = 0; i < 3; i++)         for (j = 0; j < 3; j++)             cin >> a[i][j];     cout << "请输出这个3行3列的矩阵:" << endl;     for (i = 0; i < 3; i++)     {         for (j = 0; j < 3; j++)             cout << setw(5) << a[i][j];         cout << endl;     }     for (i = 0; i < 3; i++)         sum += a[i][i];     cout << "对角线元素之和为:" << sum << endl;     return 0; } Q32.(10分)用公式 π=4-4/3+4/5-4/7+...)计算π的近似值,直到最后一项绝对值小于1e-5 输入格式要求:无 输出结果格式要求: cout << "pi =" << pi << endl; #include<iostream> using namespace std; int main() {     double pi = 0;     double n = 1;     int f = 1;     while (4.0 / n >= 1e-5)     {         pi = pi + f * 4 / n;         n = n + 2;         f = -f;     }     cout << "pi =" << pi << endl;     return 0; } Q33.(10分)求一个4×4矩阵的四周元素之和。 输入提示信息格式要求:cout << "请输入4行4列矩阵的元素:" << endl; 输出提示信息格式要求:cout << "请输出这个4行4列的矩阵:" << endl; cout << "四周元素之和为:" << sum << endl; #include <iostream> #include<iomanip> using namespace std; int main() {     double a[4][4], sum = 0;     int i, j;     cout << "请输入4行4列矩阵的元素:" << endl;     for (i = 0; i < 4; i++)         for (j = 0; j < 4; j++)             cin >> a[i][j];     cout << "请输出这个4行4列的矩阵:" << endl;     for (i = 0; i < 4; i++)     {        
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服