c语言习题及答案-爱课程mooc 下载本文

示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。 识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

程序运行结果示例1: 0-123-41562-4↙ Right

程序运行结果示例2: 0-123-41562-7↙ 0-123-41562-4

输入格式: 用gets()输入字符串

输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN的格式要求)。 输出格式:

输入的ISBN号码的识别码正确,输出信息: \

输入的ISBN号码的识别码错误,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”),输出格式:\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 输入样例: 输入样例:

#include #include int i=0,j=0; int main() {

char s[14],d[14]; int m[9]={0}; int n=0,l=0; gets(s); n=s[12]-48;

for (i=0;s[i]!='\\0';i++) {

if (s[i]!='-') {

m[j]=s[i]; j++; } }

for (j=1;j<=9;j++) {

printf(\ l+=(m[j-1]-48)*j; }

l=l;

if (l==n)

printf(\ else {

strncpy(d,s,12); d[12]=l+48; d[13]='\\0'; printf(\ }

return 0; }

9.2

摘苹果(4分)

题目内容:

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 程序运行结果示例1:

100 110 130 200 140 150 156 187 197 149↙ 110↙ 4

程序运行结果示例2:

90 210 102 153 147 110 130 182 88 113↙ 100↙ 6

输入格式: \ 输入包括两行数据:

第1行包含10个100到200之间的整数(包括100和200,以厘米为单位),分别表示10个苹果到地面的高度。两个相邻的整数之间用一个空格隔开。

第2行只包括一个100到120之间的整数(包含100和120,以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 输出格式: \

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 输入样例: 输出样例:

#include int main() {

int m[10]={0}; int i,j=0,n;

for (i=0;i<10;i++)

scanf(\ scanf(\ for (i=0;i<10;i++) if(m[i]<=n+30) j++;

printf(\ return 0; }

9.3

求最大素数(4分)

题目内容:

求500以内的10个最大素数及其和,并分别输出这10个最大素数及其和。 要求10个素数按从大到小的顺序输出。 输入格式: 无 输出格式:

10个最大素数的输出格式:\ 总和的输出格式:\ 输入样例: 输出样例:

#include #include int judge(int n;); int main() {

int m[500]; int j,l=0,sum=0; for (j=500;j>0;j--) {

if (judge(j)) m[l++]=j; }

for (j=0;j<10;j++) {

sum+=m[j];

printf(\ }

printf(\ return 0; }

int judge(int n) {

int i;

for (i=2;i<=sqrt((double)n);i++) {

if (n%i==0) return 0; }

return 1; }

9.4

字符串逆序(4分)

题目内容:

用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。

调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。 (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为: void Inverse(char str[]); 程序运行结果示例1: Input a string: abcde↙ Inversed results: edcba

程序运行结果示例2: Input a string: hello↙

Inversed results: olleh

输入格式: 用gets()输入字符串 输出格式:

输入提示信息:\ 输出提示信息:\\\n\用puts()输出字符串

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 输入样例: 输出样例:

#include #include #define maxn 80

void Inverse(char str[]); int main(){

char str[maxn];

printf(\ gets(str);

printf(\ Inverse(str); puts(str); return 0; }

void Inverse(char str[]) {

char ch;

int len = strlen(str),i;