失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 同济大学电子与信息工程学院计算机系夏令营机试题目【含题解 注释】

同济大学电子与信息工程学院计算机系夏令营机试题目【含题解 注释】

时间:2022-12-06 13:17:13

相关推荐

同济大学电子与信息工程学院计算机系夏令营机试题目【含题解 注释】

第一题:签到题(10分)

【题目要求】:

键盘依次输入 4 个字符串,分别是临时学号、姓名、报考类别和本科学校,按右对齐方式输出,要求其中最长的字符串输出时左边无空格,4 行的冒号对齐,冒号为半角字符,前后各一个空格

【输入要求】:

1、四个字符串均不含空格,长度不超过 40

2、不考虑输入错误

【输出要求】:

1、共四行,不要有多余的空行

2、每行最后无多余的空格或其它字符

【输入示例1】:

999张三硕士同济大学999 : 临时学号张三 : 姓名硕士 : 报考类别同济大学 : 本科院校

【输入示例2】:

123456789012345测试账号直博上大123456789012345 : 临时学号测试账号 : 姓名(这里没对齐是因为csdn的编辑格式问题)直博 : 报考类别上大 : 本科院校

免责声明:由于本人没有系统学过acm,所以代码格式有点怪也请勿喷,结果对就算胜利捏。

【源代码】:

#include<stdio.h>using namespace std;const int maxn = 100;int main(){char str1[4][maxn];char str2[4][maxn]={"临时学号","姓名","报考类别","本科院校"};for(int i=0;i<4;i++){scanf("%s",str1[i]);}//for(int i=0;i<4;i++){//printf("%s\n",str1[i]);//}int btemp = 0;int len[4][1];for(int i=0;i<4;i++){int temp = 0;for(int j=0;str1[i][j];j++){temp += 1;}len[i][0] = temp;if(temp>btemp) btemp = temp; //获得最长的行的长度 }//printf("%d\n",btemp);for(int i=0;i<4;i++){while(len[i][0]<btemp){len[i][0] += 1;printf(" ");}if(i<3)printf("%s : %s\n",str1[i],str2[i]);else printf("%s : %s",str1[i],str2[i]);}return 0;}

第 2 题:递归(20 分)

【题目要求】:

1、键盘输入 2-9 间的数字,输出对应的数字三角形

2、采用递归方式完成,整个程序中不允许出现循环(for、while、do-while、if-goto 均不允许)

3、给出预置的 cpp 文件,其中 main 函数不允许改动

【输入要求】:

1、输入一个 2-9 间的整数

2、不考虑输入错误

【输出要求】:

1、若输入的数字是 n,则共输出 n 行

2、每个数字之间加一个空格,每行的最后一个 1 后面,既可以有空格,也可以无空格

【输入示例1】:

请输入 2-9 间的数字712 13 2 14 3 2 15 4 3 2 16 5 4 3 2 17 6 5 4 3 2 1

【输入示例2】:

请输入 2-9 间的数字912 13 2 14 3 2 15 4 3 2 16 5 4 3 2 17 6 5 4 3 2 18 7 6 5 4 3 2 19 8 7 6 5 4 3 2 1

预置的 b2.cpp(可将下面文本框中代码复制到 DevC++中):

#include <iostream>using namespace std;/* 本题限制要求:1、用递归方式完成,不准用循环(while、do-while、for、if-goto 均不允许)2、除 output 函数外,还允许定义其它函数3、不允许改动 main 函数*/int main(){int k;cout << "请输入 2-9 间的数字" << endl;cin >> k; //不考虑输入错误output(k);return 0;}

【源代码】:

#include <iostream>using namespace std;void output(int k);void output1(int k);/* 本题限制要求:1、用递归方式完成,不准用循环(while、do-while、for、if-goto 均不允许)2、除 output 函数外,还允许定义其它函数3、不允许改动 main 函数*/int main(){int k;cout << "请输入 2-9 间的数字" << endl;cin >> k; //不考虑输入错误output(k);return 0;}void output(int k){if(k==1){cout<<k<<' ';//对于k=1时,直接输出}else{output(k-1); cout<<endl;output1(k);//对其余k值,再分别调用output1函数}}void output1(int k){cout<<k<<' ';if(k>=2) output1(k-1);}

//后面两道题先空着

第 3 题:文件处理(30 分)

【题目要求】:

用 main 函数带参数方式传入一个文件名,打开该文件,统计文件中出现的大写字母、小写字母、数字、空格及其它字符的个数,并输出五种类型字符的总数。

注:other 的计数方法,不允许取文件大小后减去其余四种,必须是判断该字符的值不属于前4 种后再归入 other 计数。

【输入要求】:

1、文件名以 main 函数带参数方式给出(不考虑文件名输入错误)

2、假设文件中字符均为基本 ASCII 码 (不含扩展 ACII 码/中文,不考虑字符集不同带来的统计差异)

3、文件大小不大于 1GB

4、DevC++的集成环境下调试时,菜单“运行”-“参数”中可设置 main 函数的参数

【输出要求】:

1、共六行,不要有多余的空行

2、每行最后无多余的空格或其它不可见字符

3、前五行的值之和应等于第六行,第六行的值应与该文件的文件属性中显示的字节大小一致

示例输入与输出:(假设 main 函数带的参数是 helloworld.cpp)

#include<stdio.h>using namespace std;int main(){FILE* fp;fp = fopen("070707.cpp","r"); //文件名改为同一目录下的某个文件即可long long Words, words, num, space, others;Words = words = num = space = others = 0;while(true){char c = fgetc(fp);if(c==-1)//文件结尾break;else if(c>='A'&&c<='Z') Words++;else if(c>='a'&&c<='z') words++;else if(c==' ') space++;else if(c>='0'&&c<='9') num++;else if(c=='\n') others+=2;//换行符算两个字节else others++;}fclose(fp);printf("Words : %d\n",Words);printf("words : %d\n",words);printf("num : %d\n",num);printf("space : %d\n",space);printf("others : %d\n",others);printf("total : %d",Words+words+num+space+others);}

如果觉得《同济大学电子与信息工程学院计算机系夏令营机试题目【含题解 注释】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。