sse哈工大C语言编程练习44

sse哈工大C语言编程练习44 2026 年 3 月 16 日收获1.当一个对象有多个属性时可考虑使用结构体完成输入和查找。1. 奇偶排序Q6410题目描述输入 10 个数将 10 个整数按升序排列输出并且奇数在前偶数在后。可利用 2 个数组变量一个用来存放输入的整数输入后对这个数组进行排序然后将数据复制到另一个数组中先复制奇数再复制偶数。输入提示Input 10 numbers:输入格式%d输出格式Output: %d,%d,%d,%d,%d,%d,%d,%d,%d,%d示例Input 10 numbers:23 1 23 34 56 25 54 45 23 13 Output: 1,13,23,23,23,25,45,34,54,56↙#includestdio.hintmain(){inta[10],result[10];printf(Input 10 numbers:);// 输入 10 个数字for(inti0;i10;i){scanf(%d,a[i]);}// 冒泡排序将数组 a 按升序排列for(inti0;i9;i){for(intj0;j10-i-1;j){if(a[j]a[j1]){inttmpa[j];a[j]a[j1];a[j1]tmp;}}}// 先将奇数放入 result 数组intfront0;for(inti0;i10;i){if(a[i]%21)result[front]a[i];}// 再将偶数放入 result 数组for(inti0;i10;i){if(a[i]%20)result[front]a[i];}// 输出结果printf(Output: %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9]);return0;}2. 判断整数的正负性和奇偶性Q1202题目描述编程判断输入整数的正负性和奇偶性。输入格式要求%d提示信息Input m:输出格式要求如果是负偶数则输出%d is a negative even\n如果是负奇数则输出%d is a negative odd\n如果是正偶数则输出%d is a positive even\n如果是正奇数则输出%d is a positive odd\n如果是 0则输出%d is zero. It is an even\n程序运行示例 1Input m:6↙ 6 is a positive even程序运行示例 2Input m:0↙ 0 is zero. It is an even#includestdio.h#includestdlib.hintmain(){intm;printf(Input m:);scanf(%d,m);if(m0){// 0 的情况printf(%d is zero. It is an even\n,m);}elseif(m0){// 负数情况if(abs(m)%21){printf(%d is a negative odd\n,m);}else{printf(%d is a negative even\n,m);}}else{// 正数情况if(m%21){printf(%d is a positive odd\n,m);}else{printf(%d is a positive even\n,m);}}return0;}3. 字符串逆序字符数组Q108题目描述用字符数组作函数参数编程利用一个数组实现字符串允许输入带空格的字符串的逆序存放。要求如下在主函数中从键盘输入字符串字符串的最大长度为 80 个字符调用 Inverse() 函数将字符串逆序存放然后在主函数中输出逆序后的字符串。在子函数 Inverse() 中实现字符串的逆序存放。函数原型为void Inverse(char str[]);输入提示信息Input a string:\n输出提示信息Inversed results:\n用 gets() 输入字符串用 puts() 输出字符串注不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。用纯 C 语言编程所有变量必须在第一条可执行语句前定义。#includestdio.h#includestring.hvoidInverse(charstr[]);intmain(){charstr[80];printf(Input a string:\n);gets(str);// 输入字符串可含空格Inverse(str);// 调用逆序函数printf(Inversed results:\n);puts(str);// 输出逆序后的字符串return0;}// 字符串逆序函数voidInverse(charstr[]){intlenstrlen(str);chartemp;// 双指针法首尾交换for(inti0;ilen/2;i){tempstr[i];str[i]str[len-1-i];str[len-1-i]temp;}}4. 小写字母转大写字母Q6443题目描述编程将小写字母转换为大写字母。要求输入用 getchar();输出用 printf 函数。程序运行结果示例输入一个小写字符 a Converted character: A,65输入提示Enter a lowercase character\n输入格式getchar()输出格式Converted character: %c,%d\n#includestdio.hintmain(){charc;printf(输入一个小写字符\n);cgetchar();// 读取一个字符// 小写转大写减去a与A的 ASCII 码差值cc-aA;printf(转换以后的字符为%c,%d\n,c,c);return0;}说明小写字母’a’的 ASCII 码是 97大写字母’A’的 ASCII 码是 65转换公式大写 小写 - a A或大写 小写 - 325. 学生成绩查找结构体Q543题目描述从键盘输入某班学生某门课的成绩每班人数最多不超过 40 人当输入为负值时表示输入结束试编程从键盘任意输入一个学号查找该学号学生的成绩。输入格式要求%ld(学号)%ld%d提示信息Total students are %d\nInput the searching ID:Input students ID and score:输出格式要求score %d\nNot found!\n程序的两次运行示例示例 1Input students ID and score:070310122 84 Input students ID and score:070310123 83 Input students ID and score:070310124 88 Input students ID and score:070310125 87 Input students ID and score:070310126 61 Input students ID and score:-1 -1 Total students are 5 Input the searching ID:070310123 score 83示例 2Input students ID and score:070310122 84 Input students ID and score:070310123 83 Input students ID and score:070310124 88 Input students ID and score:070310125 87 Input students ID and score:070310126 61 Input students ID and score:-1 -1 Total students are 5 Input the searching ID:070310128 Not found!#includestdio.h// 定义学生结构体structstudent{longxh;// 学号intscore;// 成绩};intmain(){intn0,flag0;longID;structstudentS[40];// 最多 40 个学生// 循环输入学生信息直到输入负值while(1){printf(Input students ID and score:);scanf(%ld %d,S[n].xh,S[n].score);// 如果学号或成绩为负值结束输入if(S[n].xh0||S[n].score0){break;}n;}printf(Total students are %d\n,n);printf(Input the searching ID:);scanf(%ld,ID);// 查找指定学号的学生for(inti0;in;i){if(S[i].xhID){flag1;printf(score %d\n,S[i].score);}}// 如果没有找到if(flag0){printf(Not found!);}return0;}