int main() { char input[20]; int count = 3; while (count > 0) { printf("请输入密码"); scanf("%s", input); if (strcmp(input, PASSWORD) == 0) { printf("密码正确,欢迎进入系统!\n"); break; } else { printf("密码错误,请重新输入!\n"); } } return 0; void in(); void delet(); void updet(); void select(); void print(); void sort(); void max(); void cut(); void clea(); void menu(); int n; printf("请选择功能(1-9):\n"); scanf("%d",&n); while(n) { if(n>=1&&n<=9) { switch(n) { case 1:in();break; case 2:delet();break; case 3:updet();break; case 4:select();break; case 5:print();break; case 6:sort();break; case 7:max();break; case 8:cut();break; case 9:clea();break; } if(n==9) { menu(); } printf("\n"); printf("请选择功能(1-9):"); scanf("%d",&n); } else { printf("\n"); printf("请重新输入:"); scanf("%d",&n); } } return 0;
时间: 2024-04-26 07:20:19 浏览: 133
这段代码是一个简单的密码验证程序和一个菜单驱动的程序。首先,用户需要输入密码,如果输入的密码与预设的密码相同,则程序输出“密码正确,欢迎进入系统!”并跳出循环,否则程序输出“密码错误,请重新输入!”并继续执行循环。接下来,程序打印一个菜单,让用户选择不同的功能。根据用户的选择,程序会调用不同的函数来执行不同的操作。如果用户选择了第9个功能,则程序会重新显示菜单,让用户再次选择。如果用户输入了一个不在1-9之间的数字,则程序会提示用户重新输入。
相关问题
int main() { char input; int count = 0; while (input = getchar() != '\n') { printf("%c", input); if ((input>'A' && input <= 'Z') && input != 'E' && input != 'I' && input != 'O' && input != 'U') { count++; } } printf("%d", count); return 0; }为什么我这段c语言代码无法判断复印大写字母数量
你的代码问题在于 `while (input = getchar() != '\n')` 这一行。
根据C语言的运算符优先级,`!=` 的优先级比 `=` 高,所以这一行代码的实际效果是,先将 `getchar()` 函数的返回值与 `'\n'` 进行比较,得到一个布尔类型的值,然后将这个布尔值赋给 `input` 变量。因此,`input` 变量实际上存储的是 `getchar() != '\n'` 的结果,而不是输入的字符。
解决这个问题的方法是通过加括号来改变优先级,即将 `input = getchar() != '\n'` 改为 `(input = getchar()) != '\n'`。这样,先执行 `getchar()` 函数,获取输入的字符,然后将这个字符赋给 `input` 变量,最后再将 `input` 与 `'\n'` 进行比较,得到一个布尔值。
另外,你的代码中,`input` 变量应该声明为字符型,即 `char input;`,而不是整型。
修改后的代码如下:
```c
#include <stdio.h>
int main() {
char input;
int count = 0;
while ((input = getchar()) != '\n') { // 注意加括号改变优先级
printf("%c", input);
if (input >= 'A' && input <= 'Z' && input != 'E' && input != 'I' && input != 'O' && input != 'U') {
count++;
}
}
printf("%d", count);
return 0;
}
```
这个代码可以正确地读入输入的字符串,并统计其中大写辅音字母的数量。
C语言排错#include <stdio.h> #include <stdlib.h> unsigned int NumofChar(char * str,char ch) { int count=0; char *p=str; while(*p!='\0') { if((*p++)==ch) {count++;} } return count; } char * DelChar(char * str,char ch,unsigned int n) { char *s=str; int co=0; while(co<n) { if(*s==ch) { co++; for(char* p=s;*p!='\0';p++) *p=*(p+1); s--; } s++; }a return s; } int main() { char str[100]; printf("Please input the string!\n"); gets(str); char c; printf("Please input the character!\n"); scanf("%c",&c); unsigned int count=NumofChar(str,c); if(count==0) { printf("Not found!"); return 0; } printf("The number of %c is %d!\nWhich one do you want to delete?Please input the serial number:\n",c,count); int sn;//第几个数字 scanf("%d",&sn); printf("%s",DelChar(str,c,sn)); return 0; }
在函数 `DelChar` 的第 21 行,多了一个 `a` 字符,需要删除。此外,在删除字符的过程中,应该先把 `s` 指针移动到要删除的字符位置,然后再进行删除操作。修改后的代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
unsigned int NumofChar(char * str,char ch) {
int count=0;
char *p=str;
while(*p!='\0')
{
if((*p++)==ch)
{count++;}
}
return count;
}
char * DelChar(char * str,char ch,unsigned int n) {
char *s=str;
int co=0;
while(co<n && *s!='\0')
{
if(*s==ch)
{
co++;
char* p=s;
while (*p!='\0')
{
*p=*(p+1);
p++;
}
s--;
}
s++;
}
return str;
}
int main() {
char str[100];
printf("Please input the string!\n");
gets(str);
char c;
printf("Please input the character!\n");
scanf("%c",&c);
unsigned int count=NumofChar(str,c);
if(count==0)
{
printf("Not found!");
return 0;
}
printf("The number of %c is %d!\nWhich one do you want to delete?Please input the serial number:\n",c,count);
int sn;//第几个数字
scanf("%d",&sn);
printf("%s",DelChar(str,c,sn));
return 0;
}
```
阅读全文