3.8网络第1场 8:40-9:40
- 1.输入一串字符串,保留前面和中间的"#",删除后面所有连续的"#"。如输入"Hello#C####",输出"Hello#C"
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
int i, length, new_length;
printf("请输入字符串,要求以#结束\n");
gets(s);
length = strlen(s);
for(i = length - 1; i>=0; i--){
if(s[i] == '#'){
s[i] = '\0';
new_length --;
}
else {
break;
}
}
printf("删除后方#后的字符串为:\n");
puts(s);
return 0;
}
- 2.输入桌子的平米和椅子的数量,如果是1平米,价格是1200;如果是2平米,价格是2200。如果椅子数量不高于4个,每把价格100元,否则超过4个的部分每把价格80元。输入桌子的平米数(1或2)以及椅子的数量,计算总价格
#include <stdio.h>
int main(){
int num1, num2, money1, money2, total;
printf("请输入桌子的平方数(1或2):\n");
scanf("%d", &num1);
printf("请输入椅子的数量:\n");
scanf("%d", &num2);
switch(num1){
case 1:
money1 = 1200; break;
case 2:
money1 = 2200; break;
}
if(num2>0 && num2 <= 4){
money2 = 100 * num2;
}
else if(num2 > 4){
money2 = 100 * 4 + (num2 - 4) * 80;
}
total = money1 + money2;
printf("桌子花费%d元,椅子花费%d元,共计%d元.", money1, money2, total);
return 0;
}
3.8网络第2场 10:50-11:50
- 1.现有2个数组a和b,请将a数组中有但b数组中没有的字符存入数组c并输出c
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char a[MAX], b[MAX], c[MAX];
int length_a, length_b, i, j, k = 0;
printf("请输入字符串a的值:");
gets(a);
printf("请输入字符串b的值:");
gets(b);
length_a = strlen(a);
length_b = strlen(b);
for(i = 0; i < length_a; i++){
for(j = 0; j < length_b; j++){
if(a[i] == b[j]){
break;
}
}
if(j == length_b){
c[k++] = a[i];
}
}
c[k] = '\0';
printf("数组a中有但数组b中没有的字符为:%s", c);
return 0;
}
// 上述代码有一个小bug,即当a为"nihaoa",b为"woshi"的时候,c为"naa",严格来讲c应该为"na"
// 解决方法有很多,比如在遍历数组a时先进行一次去重操作
- 2.有一本书共160页,第一天读了10页,以后每天都比前一天多读5页,请问几天可以读完,最后一天读了多少页?
#include <stdio.h>
int main(){
int day = 1, page_every_day = 10, page_total = 10;
int last_day_pages;
while(page_total <= 160){
page_every_day += 5;
page_total += page_every_day;
day++;
}
last_day_pages = 160 - (page_total - page_every_day);
printf("一共读了%d天 最后一天读了%d页", day, last_day_pages);
return 0;
}
3.8网络第3场 14:00-15:00
- 1.用户输入密码进行判断,总共有5次机会。如果正确则提示密码正确,否则提示密码错误,并提醒剩余的可用次数
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
int count = 5;
char pwd[MAX] = "hello@845";
char user_pwd[MAX];
while(count >= 1){
printf("请输入用户密码:");
gets(user_pwd);
if(strcmp(pwd, user_pwd) == 0){
printf("登录成功,正在退出...");
break;
}
count --;
printf("登录失败!剩余%d次机会\n", count);
if(count == 0){
printf("次数已用完");
}
}
return 0;
}
- 2.某出租车公司规定6:00-23:00打车,3km之内是8元,超过3km的话每公里多收3元。23:00-次日6:00打车,3km之内是10元,超过3km的话每公里多收3.5元。输入时间段和公里数,求车费共多少元
#include <stdio.h>
int main(){
int time;
float distance, money;
while(1){
printf("请输入时间和行驶公里数:");
scanf("%d %f", &time, &distance);
if(time < 0 || distance < 0){
printf("输入有误!, 请重新输入!\n");
continue;
}
if(time >= 6 && time < 23){
if(distance <= 3){
money = 8 * distance;
}
else {
money = 3 * 8 + (distance - 3) * (8 + 3);
}
}
else {
if(distance <= 3){
money = 10 * distance;
}
else {
money = 3 * 10 + (distance - 3) * (10 + 3.5);
}
}
printf("%d点行驶了%.3f公里,支付%.3f元", time, distance, money);
break;
}
return 0;
}
3.8网络第4场 16:10-17:10
- 1.现有10名同学的成绩,求最高分是多少,并计算最高分出现了多少次
#include <stdio.h>
int main(){
int score[10] = {89, 90, 78, 95, 91, 95, 95, 88, 65, 80};
int max = score[0], count = 0, i;
for(i = 1; i < 10; i++){
if(score[i] > max){
max = score[i];
}
}
for(i = 0; i < 10; i++){
if(score[i] == max){
count ++;
}
}
printf("最高分为%d, 出现了%d次", max, count);
return 0;
}
- 2.输入正整数n,统计1-n的数中一共出现了多少次8
#include <stdio.h>
int main(){
int n, count = 0, i, data, a;
printf("请输入n的值:");
scanf("%d", &n);
for(i = 1; i <= n; i++){
data = i;
while(data){
a = data%10;
if(a == 8){
count++;
}
data /= 10;
}
}
printf("一共出现了%d次8", count);
return 0;
}
#include <stdio.h>
int cal_eight(int);
int main(){
int n, count, a;
printf("请输入n的值:");
scanf("%d", &n);
count = cal_eight(n);
printf("一共出现了%d次8", count);
return 0;
}
int cal_eight(int num){
int i, data, a, count = 0;
for(i = 1; i <= num; i++){
data = i;
while(data){
a = data % 10;
if(a == 8){
count++;
}
data /= 10;
}
}
return count;
}
3.8软件第1场 8:00-9:00
- 1.求运费
- 2.输入字符串,统计大写字母、小写字母和数字的个数
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX], t;
int i = 0, num_upper = 0, num_lower = 0, num_digit = 0;
printf("请输入字符串:");
gets(s);
while(s[i] != '\0'){
t = s[i];
if(t >= 'A'&& t <= 'Z'){
num_upper++;
}
else if(t >= 'a'&&t <= 'z'){
num_lower++;
}
else if(t >= '0'&&t <= '9'){
num_digit++;
}
i++;
}
printf("大写字母%d个, 小写字母%d个, 数字字符%d个", num_upper, num_lower, num_digit);
return 0;
}
3.8软件第2场 11:00-12:00
#include <stdio.h>
float cal_avg_age(int s[], int n){
int i;
float avg = 0;
for(i = 0; i < n; i++){
avg += s[i];
}
avg /= n;
return avg;
}
int main(){
int age[6] = {25, 50, 31, 37, 19, 20}, n = 6;
float avg_age;
avg_age = cal_avg_age(age, n);
printf("平均年龄为%.2f", avg_age);
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char user_pwd[MAX], pwd[MAX] = "hello@904";
printf("请输入用户密码:");
gets(user_pwd);
if(strcmp(user_pwd, pwd) == 0){
printf("密码正确, 登录成功!");
}
else{
printf("密码错误, 登录失败!");
}
return 0;
}
3.8软件第3场 13:00-14:00
#include <stdio.h>
#define ROW 3
#define COL 3
int main(){
int a[ROW][COL] = {4, 12, 5, 6, 7, 0, 9, 2, 13}, max[ROW] = {0};
int i, j;
for(i = 0; i < ROW; i++){
max[i] = a[i][0];
for(j = 1; j < COL; j++){
if(a[i][j] > max[i]){
max[i] = a[i][j];
}
}
printf("第%d行的最大值为%d\n", i + 1, max[i]);
}
return 0;
}
- 2.输入数字n,输出n行"*",第1行输出1个,第2行输出2个,以此类推,用func函数实现
#include <stdio.h>
#include <stdlib.h>
void print_char(int m){
int i, j;
for(i = 1; i <= m; i++){
for(j = 1; j <= i; j++){
printf("*");
}
printf("\n");
}
}
int main(){
int i, j, n;
printf("请输入正整数n的值:");
scanf("%d", &n);
if(n <= 0){
printf("数值异常!\n");
exit(-1);
}
print_char(n);
return 0;
}
3.8软件第4场 15:00-16:00
- 1.某商场打折促销,购物满300元不足500元享3%折扣,满500元享5%折扣。输入消费金额,计算打折后应付款
#include <stdio.h>
int main(){
float amount, money, discount;
printf("请输入消费金额:");
scanf("%f", &amount);
if(amount > 0&&amount < 300){
discount = 0;
}
else if(amount >= 300&&amount < 500){
discount = 0.03;
}
else{
discount = 0.05;
}
money = amount * (1 - discount);
printf("消费金额为%.2f,付款%.2f", amount, money);
return 0;
}
- 2.判断字符串中的字母个数,将所有字母都转换成大写字母并输出
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX], t;
int i = 0, count = 0, upper, lower;
printf("请输入字符串的值:");
gets(s);
while(s[i] != '\0'){
t = s[i];
upper = t >= 'A'&&t <= 'Z';
lower = t >= 'a'&&t <= 'z';
if(upper||lower){
count++;
if(lower){
s[i] -= 32;
}
}
i++;
}
printf("字母个数为%d, 字符串内容为%s", count, s);
return 0;
}
- 3.在长度为8的一维数组中打印奇数元素的最大值,如果没有奇数就打印"未找到奇数元素"
#include <stdio.h>
#define LEN 8
int main(){
int arr[LEN] = {8, 6, 4, 52, 6, 59, 44, 17};
int t, i = 0, count = 0, j, max;
for(i = 0; i < LEN; i++){
if(arr[i] % 2){
count++;
max = arr[i];
break;
}
}
if(count == 0){
printf("未找到奇数元素");
}
else{
for(j = i + 1; j < LEN; j++){
t = arr[j];
if(t % 2&&t > max){
max = t;
}
}
printf("奇数元素的最大值为%d", max);
}
return 0;
}
- 4.自定义函数进行猜数。如果输入的数过大就打印"猜大了",输入的数过小就打印"猜小了",否则显示"猜对了"
#include <stdio.h>
void guess(int m, int n){
if(m > n){
printf("猜大了!");
}
else if(m < n){
printf("猜小了");
}
else{
printf("猜对了");
}
}
int main(){
int sys_num = 7, guess_num;
printf("请输入您猜的数:");
scanf("%d", &guess_num);
guess(guess_num, sys_num);
return 0;
}
3.8软件第5场 17:00-18:00
#include <stdio.h>
int main(){
int a, b;
printf("请输入a的值:");
scanf("%d", &a);
if(a%2){
b = a % 10;
printf("%d是奇数, 个位数为%d", a, b);
}
else{
printf("%d不是奇数", a);
}
return 0;
}
- 2.输入字符c,判断c是大写字母、小写字母、数字字符还是其他字符
#include <stdio.h>
int main(){
char c;
printf("请输入字符的值:");
scanf("%c", &c);
if(c >= 'A'&&c <= 'Z'){
printf("%c是大写字母", c);
}
else if(c >= 'a'&&c <= 'z'){
printf("%c是小写字母", c);
}
else if(c >= '0'&&c <= '9'){
printf("%c是数字字符", c);
}
else{
printf("%c是其他字符", c);
}
return 0;
}
- 3.现有分段函数,当x<=0时,y=x+6;当0<x<10时,y=3x+6;当x>=10时,y=3x-6。输入x的值求对应y的值
#include <stdio.h>
int main(){
float x, y;
printf("请输入x的值:");
scanf("%f", &x);
if(x <= 0){
y = x + 6;
}
else if(x < 10){
y = 3 * x + 6;
}
else{
y = 3 * x - 6;
}
printf("当x=%.2f时, y=%.2f", x, y);
return 0;
}
- 4.三名裁判分别对三位运动员打分,统计每个运动员的平均分
#include <stdio.h>
#define ROW 3
#define COL 3
int main(){
float score[ROW][COL], avg_score[ROW];
int i, j;
printf("请输入3名运动员的得分情况(3*3):\n");
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
scanf("%f", &score[i][j]);
}
}
for(i = 0; i < ROW; i++){
avg_score[i] = 0;
for(j = 0; j < COL; j++){
avg_score[i] += score[i][j];
}
avg_score[i] /= COL;
printf("第%d名运动员的平均分为%.2f\n", i + 1, avg_score[i]);
}
return 0;
}
3.9网络第1场 8:40-9:40
-
- 2.输入字符串,分别计算元音字母的个数,不区分大小写,用switch结构实现
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, count_a = 0, count_e = 0, count_i = 0, count_o = 0, count_u = 0;
printf("请输入一个字符串:");
gets(s);
while(s[i] != '\0'){
switch(s[i]){
case 'A':
case 'a':
count_a++;
break;
case 'E':
case 'e':
count_e++;
break;
case 'I':
case 'i':
count_i++;
break;
case 'O':
case 'o':
count_o++;
break;
case 'U':
case 'u':
count_u++;
break;
}
i++;
}
printf("a e i o u的个数为:%d %d %d %d %d", count_a, count_e, count_i, count_o, count_u);
return 0;
}
3.9网络第2场 10:50-11:50
- 1.输入一串字符,删除其中重复的字符,保证每个字符只输出1次
// "hellokjcm" 只需要将第2个"l"后方的"okjcm"依次往前移动即可
// "heckjclmnp" 只需要将第2个"c"后方的"lmnp"依次往前移动即可
// "heckjcclmnp" 需要将第2个"c"后方的"clmnp"依次往前移动后,还要再将最后1个c后方的"clmnp"依次往前移动
// "hellokjclmoee" 第1个"l"后方的所有字符往前移动无法满足需求,因为后面还有一个"l",它后方的"moee"也需要依次往前移动
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i, j, k, length;
printf("请输入字符串的内容:");
gets(s);
length = strlen(s);
for(i = 0; i < length - 1; i++){
for(j = i + 1; s[j] != '\0'; j++){
k = j;
// 只要k指向的字符和i指向的字符一致,那就将k后方的所有字符依次往前移动一个单位
if(s[k] == s[i]){
while(s[k] != '\0'){
s[k] = s[k + 1];
k++;
}
length--;
}
// 如果重复字符后方所有字符往前移动后,j指向的字符依然和i相同(即有连续两个相同的字符),如果直接执行for循环中的"j++",那这个重复字符就无法被删除。所以先执行"j--"后执行for循环中的"j++",保证了j的位置没变,继续删除重复字符
if(s[j] == s[i]){
j--;
}
}
}
printf("删除之后的字符串为:");
puts(s);
return 0;
}
#include <stdio.h>
#define MAX 1000
int main(int argc, const char * argv[]) {
// insert code here...
char ch1[MAX], ch2[MAX], c; // ch1存储输入的字符串 ch2存储删除重复字符后的字符串 c为ch1中字符的值
int i, j = 0, index, cnt[256] = {0};
printf("请输入字符串ch1:");
gets(ch1);
for (i = 0; ch1[i] != '\0'; i++) {
c = ch1[i];
index = (int)c; // 将c的ASCII码值作为下标
if (cnt[index] == 0) {
cnt[index]++;
ch2[j++] = c;
}
}
ch2[j] = '\0';
printf("去除重复字符串后的值为:");
puts(ch2);
return 0;
}
- 2.收水费的规则如下:第1个月的用水量不超过10立方米的话,每立方米收费5元,超过的部分每立方米收费6元。如果第1个月用水量高于15立方米,则第2个月每立方米收费6元,否则按第1个月的收费方式计算。输入每个月的用水数量,输出水费
#include <stdio.h>
int main(){
float water[3] = {0, 16, 20}, money_1 = 0, money_2 = 0, money;
if(water[1] <= 10){
money_1 += water[1] * 5;
}
else{ // water[1] > 10
money_1 += 10 * 5 + (water[1] - 10) * 6;
if(water[1] <= 15){ // 10<water[1]<=15
if(water[2] <= 10){
money_2 += water[2] * 5;
}
else{
money_2 += 10 * 5 +(water[2] - 10) * 6;
}
}
else{ // water[1] > 15
money_2 += water[2] * 6;
}
}
money = money_1 + money_2;
printf("水费为%.2f元", money);
return 0;
}
3.9网络第3场 14:00-15:00
- 1.输入一个三位数num,如果能找到多组连续的整数,这些整数相加的和为num,请输出项数最多的一组连续整数。如输入102,3+4+5+6+7+8+9+10+11+12+13+14=102,24+25+26+27=102, 33+34+35=102。第一种情况项数更多,所以输出3 4 5 6 7 8 9 10 11 12 13 14
#include <stdio.h>
int main(){
int num, i, j, k, sum, mid;
int flag = 0;
printf("请输入一个整数:");
scanf("%d", &num);
mid = num / 2;
for(i = 1; i <= mid; i ++){
sum = i;
for(j = i + 1; j <= mid + 1; j++){
sum += j;
if(sum == num){
flag = 1;
for(k = i; k <= j; k++){
printf("%d ", k);
}
// printf("\n");
break;
}
}
if(flag){
return 0;
}
}
printf("无法分解");
return 0;
}
- 2.当温度高于38摄氏度时为高温天气。请输入多天的气温,直到输入0摄氏度为止,输出高温占比以及最高温度
#include <stdio.h>
int main(){
float temperature, rate;
// count表示高温的个数,total表示温度总的个数
int count = 0, total = 0;
printf("请输入温度,直到输入0摄氏度为主:");
scanf("%f", &temperature);
while(temperature != 0){
if(temperature > 38){
count++;
}
scanf("%f", &temperature);
total++;
}
total++; // 将最后输入的0摄氏度加上
rate = (count*1.0/total)*100;
printf("总共输入了%d个温度,其中高温占了%d个,占比为%.2f%%", total, count, rate);
return 0;
}
3.9网络第4场 16:10-17:10
- 1.输入一串数字字符,若含其他字符则提示输入错误并退出程序,否则输出数字字符的个数
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main(){
char ch[MAX];
int i = 0, count = 0;
printf("请输入一串数字字符:\n");
gets(ch);
while(ch[i] != '\0'){
if(ch[i] < '0'||ch[i] > '9'){
printf("输入错误,强制退出...");
exit(-1);
}
else{
count++;
}
i++;
}
printf("数字字符共%d个", count);
return 0;
}
- 2.输入每天运动的步数(输入-1结束),输出运动的天数和平均步数。若每天不低于8000步表示达标,请计算达标率是多少
#include <stdio.h>
int main(){
int num_step, day = 0, day_dst = 0;
float rate = 0, avg_step = 0;
printf("请输入当天运动的步数(输入-1结束):");
scanf("%d", &num_step);
while(num_step != -1){
if(num_step < 0){
printf("数据非法,请重新输入运动步数:");
scanf("%d", &num_step);
continue;
}
else{
avg_step += num_step;
day++;
if(num_step >= 8000){
day_dst++;
}
}
printf("继续输入运动的步数:");
scanf("%d", &num_step);
}
// 如果刚开始直接输入-1,day=0不能作为除数
if(day==0){
avg_step = 0;
rate = 0;
}
else{
avg_step /= day;
rate = day_dst * 1.0 / day * 100;
}
printf("day=%d, avg_step=%.2f, rate=%.2f%%", day, avg_step, rate);
printf("\n结束程序!");
return 0;
}
![]()
3.10网络第1场 8:40-9:40
- 1.输入字符串,输出其中的数字字符。例如输入
25*6*6#,输出"2566"
#include <stdio.h>
#define MAX 100
int main(){
char ch[MAX];
int i = 0;
printf("请输入一串字符:");
gets(ch);
while(ch[i] != '\0'){
if(ch[i] >= '0'&&ch[i] <= '9'){
putchar(ch[i]);
}
i++;
}
return 0;
}
- 2.输入若干整数,输出其中奇数各位数的和,偶数各位数的乘积,直到输入0结束
nt main(){
int num, sum, multy, b, t;
printf("请输入若干整数(输入0结束):");
scanf("%d", &num);
while(num != 0){
t = num;
sum = 0, multy = 1;
while(t){
b = t % 10;
if(b % 2){
sum += b;
}
else{
multy *= b;
}
t /= 10;
}
printf("%d各奇数位的和为%d, 各偶数位的积为%d\n请继续输入整数:", num, sum, multy);
scanf("%d", &num);
}
printf("end...\n");
return 0;
}
3.10网络第2场 10:50-11:50
#include <stdio.h>
#define ROW 3
#define COL 4
int main(){
int a[ROW][COL], i, j, sum = 0;
float avg;
printf("请输入3行4列数组的值:\n");
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
scanf("%d", &a[i][j]);
sum += a[i][j];
}
}
avg = sum * 1.0 / (ROW * COL);
printf("avg=%.2f", avg);
return 0;
}
#include <stdio.h>
#define MAX 100
int main(){
// i用作输入5个数的循环变量, j用作数组a的下标, 数组a用作存储num每一位的数, t用于暂存num的值
int num, i, j, k, t, a[MAX] = {0};
printf("请输入5个正整数:");
for(i = 0; i < 5; i++){
scanf("%d", &num);
j = 0;
t = num;
while(t){
a[j] = t % 10;
j++;
t /= 10;
}
for(k = 0; k < j / 2; k++){ // k用作对称比较数据的下标
if(a[k] != a[j - k - 1]){
break;
}
}
if(k == j / 2){ // for循环正常退出时执行
printf("%d是回文数\n", num);
}
}
return 0;
}
3.10网络第3场 14:00-15:00
- 1.输入字符串,删除其中的空格字符并输出新的字符串。如"AB C",输出"ABC"
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, j, length;
printf("请输入字符串:");
gets(s);
length = strlen(s);
while(s[i] != '\0'){ // i指向索引为length-1的位置'\0'时循环退出
if(s[i] == ' '){
for(j = i + 1; j < length; j++){ // 该循环用于将空格字符后的所有字符往前移动, 但索引为length的'\0'没有往前移动
s[j - 1] = s[j];
}
length--;
if(s[i] == ' '){ // 如果有2个或2个以上连续的空格存在, 此时即使第1个空格之后的所有字符往前移动了,但i指向的位置依然是空格,所以在执行i自增之前先做一次自减的操作, 以保证后续空格也被消除
i--;
}
}
i++;
}
s[length] = '\0'; // 将length位置处的字符赋值为'\0'
puts(s);
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, j, length;
printf("请输入字符串:");
gets(s);
length = strlen(s);
while(s[i] != '\0'){ // i指向索引为length-1的位置'\0'时循环退出
if(s[i] == ' '){
for(j = i + 1; j <= length; j++){ // 该循环用于将空格字符后的所有字符往前移动, 含索引为length的'\0'
s[j - 1] = s[j];
}
length--;
if(s[i] == ' '){ // 如果有2个或2个以上连续的空格存在, 此时即使第1个空格之后的所有字符往前移动了,但i指向的位置依然是空格,所以在执行i自增之前先做一次自减的操作, 以保证后续空格也被消除
i--;
}
}
i++;
}
puts(s);
return 0;
}
- 2.输入7个带小数位的成绩,去掉最大值和最小值,求出剩余5个数的平均值
#include <stdio.h>
int main(){
float score[7], sum = 0, avg;
int i, max = 0, min = 0;
printf("请输入7个带小数位的成绩:");
for(i = 0; i < 7; i++){
scanf("%f", &score[i]);
}
max = min = 0;
for(i = 1; i < 7; i++){
if(score[i] > score[max]){
max = i;
}
if(score[i] < score[min]){
min = i;
}
}
for(i = 0; i < 7; i++){
if(max != i&&min != i){
sum += score[i];
}
}
avg = sum / 5;
printf("avg=%.2f", avg);
return 0;
}
3.11网络第1场 8:40-9:40
- 1.加权平均数相关点
- 2.输入一个整数n,输入一组除数,输出可以整除的数,除数输入0结束
#include <stdio.h>
#define MAX 100
int main(){
int n, div, a[MAX], i = 0, j;
printf("请输入n的值:");
scanf("%d", &n);
printf("接下来输入一组除数,直到0停止:");
scanf("%d", &div);
while(div != 0){
if(n % div == 0){
a[i++] = div;
}
scanf("%d", &div);
}
if(i == 0){
printf("不存在可整除的除数!");
return -1;
}
printf("能被整除的除数有:");
for(j = 0; j < i; j++){
printf("%d ", a[j]);
}
return 0;
}
3.11网络第2场 10:50-11:50
- 1.买票问题:成人票800元,儿童票300元。现有团购优惠(儿童不计入团购人数)三人以下不享受优惠;三人到十五人(含3、15),成人享受每人80元优惠;十五人以上,若包含儿童,免除一名儿童收费,若没有儿童,每位成人再享受二十元优惠。输入总人数和儿童数,输出支付价格。
#include <stdio.h>
int main(){
int adult, child, total, money;
printf("请分别输入成人和儿童的数量:");
scanf("%d %d", &adult, &child);
while(1){
if(adult < 0||child < 0){
printf("输入数据异常!请重新输入...\n");
scanf("%d %d", &adult, &child);
continue;
}
total = adult + child;
if(total >= 0&&total < 3){
money = adult * 800 + child * 300;
}
else if(total >= 3&&total <= 15){
money = adult * 720 + child * 300;
}
else if(total > 15){
if(child >= 1){
money = adult * 800 + (child - 1) * 300;
}
else{
money = adult * 780;
}
}
break;
}
printf("money=%d", money);
return 0;
}
- 2.输入A和B两个数组,取出A中有但B中没有的,放到C数组里,输出C
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char a[MAX], b[MAX], c[MAX];
int length_a, length_b, i, j, k = 0;
printf("请输入字符串a的值:");
gets(a);
printf("请输入字符串b的值:");
gets(b);
length_a = strlen(a);
length_b = strlen(b);
for(i = 0; i < length_a; i++){
for(j = 0; j < length_b; j++){
if(a[i] == b[j]){
break;
}
}
if(j == length_b){
c[k++] = a[i];
}
}
c[k] = '\0';
printf("数组a中有但数组b中没有的字符为:%s", c);
return 0;
}
3.11网络第3场 14:00-15:00
- 1.输入一个长度大于3的字符串,在第3个字符后边加一个"#",然后输出
#include <stdio.h>
#include <string.h>
#define MAX 1000
int main(){
char s[MAX];
int i, length;
printf("请输入长度大于3的字符串:");
gets(s);
while(1){
length = strlen(s);
if(length <= 3){
printf("长度不合法, 请重新输入!\n");
gets(s);
continue;
}
for(i = length; i >= 3; i--){
s[i + 1] = s[i];
}
s[i + 1] = '#';
break;
}
puts(s);
return 0;
}
- 2.输入一个整数n,输出个位、十位和百位加和等于n的三位数。例如输入2,输出101、110、200,共3个
#include <stdio.h>
int main(){
int n, i;
printf("请输入整数n的值:");
scanf("%d", &n);
for(i = 100; i <= 999; i++){
if(i%10 + i/10%10 + i/100 == n){
printf("%d ", i);
}
}
return 0;
}
3.11网络第4场 16:10-17:10
- 1.现有小明6门课的成绩,求他的平均成绩。若不低于60分为及格,计算小明及格和不及格的门数
#include <stdio.h>
#define LEN 6
int main(){
int i, a[LEN], count = 0;
float avg = 0;
printf("请输入6门课成绩:");
for(i = 0; i < LEN; i++){
scanf("%d", a + i);
avg += a[i];
if(a[i] >= 60){
count++;
}
}
avg /= 6;
printf("平均分:%.2f, 及格:%d门, 不及格:%d门", avg, count, 6-count);
return 0;
}
- 2.输入第一个正整数,然后输入一个运算符(只能加减乘除任意一个),再输入一个正整数,求出它们的运算结果
#include <stdio.h>
int main(){
int a, b;
char opr;
float ret;
while(1){
printf("依次输入正整数 运算符 正整数:");
scanf("%d %c %d", &a, &opr, &b);
if(a <= 0||b<= 0||(opr != '+'&&opr != '-'&&opr != '*'&&opr != '/')){
printf("输入数据非法,请重新输入...\n");
continue;
}
if(opr == '+'){
ret = a + b;
}
else if(opr == '-'){
ret = a - b;
}
else if(opr == '*'){
ret = a * b;
}
else if(opr == '/'){
ret = a / b;
}
break;
}
printf("%d%c%d=%.2f", a, opr, b, ret);
return 0;
}
3.12网络第1场 8:40-9:40
- 1.输入一个正整数m,找到能整除m且十位数是5的所有三位数并放到一个数组中
#include <stdio.h>
#define MAX 900
int main(){
int m, i, j, k = 0, a[MAX] = {0};
printf("请输入m的值:");
scanf("%d", &m);
for(i = 100; i <= 999; i++){
j = i / 10 % 10;
if(i % m == 0&&j == 5){
a[k++] = i;
}
}
for(i = 0; i < k; i++){
printf("%d ", a[i]);
}
return 0;
}
- 2.一个商场中有12个柜子,3行4列排列。柜子的状态为0表示空,1表示使用,-1表示故障。请输出柜子的使用率和故障率
#include <stdio.h>
#define ROW 3
#define COL 4
int main(){
int i, j, s[ROW][COL] = {1, 0, 0, 1, 1, 1, -1, -1, 0, 0, -1, 1};
int count_use = 0, count_error = 0;
float pct_use, pct_error;
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
if(s[i][j] == 1){
count_use++;
}
if(s[i][j] == -1){
count_error++;
}
}
}
pct_use = count_use*1.0/(ROW*COL)*100;
pct_error = count_error*1.0/(ROW*COL)*100;
printf("柜子的使用率为%.2f%%, 故障率为%.2f%%", pct_use, pct_error);
return 0;
}
3.12网络第2场 10:50-11:50
- 1.验证密码:给定一个密码,用户输入字符串与密码进行比较,完全一样则输出密码正确,否则打印密码错误。
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char pwd[MAX] = "correct@!Pwd", user_pwd[MAX];
int i = 0, len_userpwd;
printf("请输入用户密码:");
gets(user_pwd);
len_userpwd = strlen(user_pwd);
while(user_pwd[i] != '\0'){
if(user_pwd[i] == pwd[i]){
i++;
}
else{
break;
}
}
if(i < len_userpwd){
printf("密码错误!");
}
else{
printf("密码正确");
}
return 0;
}
3.12网络第3场 14:00-15:00
- 1.输入一组正整数,直到输入0停止。统计输入数据的个数,并将这组数逆序输出
#include <stdio.h>
#define MAX 1000
int main(){
int num, a[MAX], count = 0, i = 0;
printf("请输入若干正整数:");
scanf("%d", &num);
while(num != 0){
if(num > 0){
a[i++] = num;
count++;
}
else{
printf("请输入正整数!\n");
}
scanf("%d", &num);
}
printf("共输入了%d个数\n", count);
for(i = count - 1; i >= 0; i--){
printf("%d ", a[i]);
}
return 0;
}
- 2.输入一串长度大于1的字符串,长度是奇数就把中间的字符改成
*,长度为偶数就在中间插入一个*
#include <stdio.h>
#include <string.h>
#define MAX 1000
int main(){
char s[MAX];
int i, length;
printf("请输入字符串(长度大于1):");
gets(s);
while(strlen(s) <= 1){
printf("长度不合格, 请重新输入!\n");
gets(s);
}
length = strlen(s);
if(length%2==0){
for(i = length; i >= length/2; i--){
s[i+1] = s[i];
}
s[i+1] = '*';
length++;
}
else{
s[length/2] = '*';
}
printf("修改后的字符串值为:");
puts(s);
return 0;
}
// hellworld length = 9 mid = 4
// helloworldee length = 12 mid = 6