【发布时间】:2022-01-18 15:16:58
【问题描述】:
所以,我得到了一个输入列表:
hello
123456
124
5223
food
7
我必须做的是,查看列表的每个元素,并检查交叉和是否等于7(例如:124 = 1 + 2 + 4 = 7,意思是,数字是有效的) 所以我们得到的输出必须是:(在控制台中它应该是这样的:)
hello
hello is invalid
123456
123456 is invalid
124
124 is valid
5223
5223 is invalid
food
food is invalid
7
7 is valid
这是我写的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 99
int cross_sum(int length ,char *name){
int sum = 0;
for(int i = 0; i < length ; i++){
if(name[i] != 0){
sum = sum +( name[i] -48);
}
}
return sum;
}
int check_crosssum( int number){
if( number % 10 == 7)
{
return 0;
}
return -1;
}
int main (void) {
char name[MAXN] ;
int sum = 0;
while (scanf("%98[^\n]", name) == 1) {
int len = strlen(name);
sum = cross_sum(len,name);
int pruf_summe = check_crosssum(sum);
if( pruf_summe == 0 && len <= 20 ){
printf("%s is valid \n" , name);
}
else{
printf("%s is invalid \n" , name);
}
}
return 0;
}
当我运行程序时,它会查看第一个元素然后结束它。 所以我得到的输出是:
hello
hello is invalid
----------
(program exited with code: 0)
如何在 while 循环的帮助下单独处理每个输入? 或者有没有其他方式,程序运行直到没有输入! 我也试过了
while(1)
它似乎没有工作。 任何想法或建议都会很棒!
【问题讨论】:
标签: arrays c char scanf user-input