编写程序,从键盘上任输入20个整数,统计其中非负数个数,并计算非负数之和C语言
时间: 2024-03-25 17:41:07 浏览: 90
好的,下面是一个简单的程序实现您的需求:
```c
#include <stdio.h>
int main() {
int num, count = 0, sum = 0;
printf("请输入20个整数:\n");
for (int i = 0; i < 20; i++) {
scanf("%d", &num);
if (num >= 0) {
count++;
sum += num;
}
}
printf("非负数个数为:%d\n", count);
printf("非负数之和为:%d\n", sum);
return 0;
}
```
程序首先提示用户输入20个整数,然后使用 for 循环依次读入每一个整数,并判断是否为非负数,如果是,则非负数个数加1,非负数之和加上该数。最后输出统计结果。
您可以自行编译运行该程序,输入20个整数进行测试。
相关问题
用c语言编写程序:从键盘上任给一个郑州大学学生的学号,输出该学号相关的信息。(例如:输入202201011150,输出:2022级,机械与动力工程学院,11班,50号),上载拍照图片、视频:0分。 要求: (1)有输入,对输入的学号判断,不是12位的数字符号重新输入学号(当输入0,结束程序运行),如果是12位数字符号,分别输出:级,学院,班级,班内序号. (2)通过提示信息“是否继续输入学生的学号(y/n)”,回答“y”,继续输入;回答“n”,结束程序运行。 说明: (1)级,限定在'2022','2021','2020','2019','2018'当中,否则重新输入学号 (2)匹配不上给定的学院代码,给出相应提示信息。学院代码如下(可以自行添加)
```c
#include <stdio.h>
#include <string.h>
int main() {
char student_id[13]; // 声明一个长度为13的字符数组,用来存储学号
char *level; // 声明一个指针变量,用来存储年级
char *college; // 声明一个指针变量,用来存储学院
char *class; // 声明一个指针变量,用来存储班级
char *number; // 声明一个指针变量,用来存储班内序号
int is_valid = 0; // 判断学号是否合法的标志变量
// 学院代码表
char college_codes[5][20] = {
{ "电气与自动化工程学院" },
{ "能源与环境学院" },
{ "计算机学院" },
{ "机械与动力工程学院" },
{ "信息工程学院" }
};
while (1) {
printf("请输入一个12位的郑州大学学生学号(输入0结束程序):");
scanf("%s", student_id);
if (strcmp(student_id, "0") == 0) { // 输入0结束程序
break;
}
if (strlen(student_id) != 12) { // 判断学号是否合法
printf("您输入的学号不是12位数字符号,请重新输入!\n");
continue;
}
// 判断年级
switch (student_id[0]) {
case '2':
if (student_id[1] == '0') {
level = "2020级";
} else if (student_id[1] == '1') {
level = "2021级";
} else if (student_id[1] == '2') {
level = "2022级";
} else {
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
break;
case '1':
if (student_id[1] == '9') {
level = "2019级";
} else if (student_id[1] == '8') {
level = "2018级";
} else {
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
break;
default:
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
// 判断学院
switch (student_id[2]) {
case '1':
college = college_codes[3];
break;
case '2':
college = college_codes[2];
break;
case '3':
college = college_codes[4];
break;
case '4':
college = college_codes[1];
break;
case '5':
college = college_codes[0];
break;
default:
printf("对不起,没有找到您输入的学院代码所对应的学院,请重新输入!\n");
continue;
}
// 判断班级
switch (student_id[9]) {
case '1':
class = "1班";
break;
case '2':
class = "2班";
break;
default:
printf("您输入的班级不正确,请重新输入!\n");
continue;
}
// 判断班内序号
switch (student_id[10]) {
case '0':
number = "10号";
break;
case '1':
number = "11号";
break;
case '2':
number = "12号";
break;
case '3':
number = "13号";
break;
case '4':
number = "14号";
break;
case '5':
number = "15号";
break;
case '6':
number = "16号";
break;
case '7':
number = "17号";
break;
case '8':
number = "18号";
break;
case '9':
number = "19号";
break;
default:
printf("您输入的班内序号不正确,请重新输入!\n");
continue;
}
// 输出学生信息
printf("%s,%s,%s,%s\n", level, college, class, number);
// 询问是否继续输入
char choice;
while (1) {
printf("是否继续输入学生的学号(y/n):");
scanf(" %c", &choice); // 注意要在前面加一个空格,避免与上一个输入的回车符冲突
if (choice == 'y' || choice == 'n') {
break;
}
}
if (choice == 'n') {
break;
}
}
return 0;
}
```
用C语言写出 要求输入历史上任一年份,输出该年的天干地支
好的,我可以回答。请参考下面的代码:
```c
#include <stdio.h>
char* HeavenlyStem[] = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
char* EarthlyBranch[] = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
int StartYear = 1900;
int main()
{
int year;
printf("请输入历史上任一年份:");
scanf("%d", &year);
if (year < StartYear)
{
printf("输入年份不正确\n");
return 1;
}
int index = (year - StartYear) % 60;
printf("%s%s年\n", HeavenlyStem[index % 10], EarthlyBranch[index % 12]);
return 0;
}
```
以上代码可以输出历史上任意一年对应的天干地支。其中,`HeavenlyStem` 是天干的名称,`EarthlyBranch` 是地支的名称。`StartYear` 是计算天干地支的起始年份。根据天干地支的规律,每 60 年为一个周期,每一年对应一组天干地支。因此,我们可以通过取模的方式计算出当前年份对应的天干地支组合。
阅读全文