fgets(str, sizeof(str), stdin);
1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char a[100];
int x = 0, b = 0, c = 0, res = 0;
printf("请输入一个字符串\n");
fgets(a, sizeof(a), stdin);
for (int i = 0; i <=strlen(a)-1; i++)
{
if (a[i] >= 'a' && a[i] <= 'z' || a[i] <= 'Z' && a[i] >= 'A')
{
x++;
}
else if (a[i] == ' ')
{
b++;
}
else if (a[i] >= '0' && a[i] <= '9')
{
c++;
}
else
{
res++;
}
}
printf("该字符串的字母有%d,数字有%d个 ,空格有%d个,其他字符有%d个\n", x, c, b, res-1);
return 0;
}
2、提示并输入一个字符串,求出该字符串中所有数字的总和
3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int arr[4][3]={0};
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("请输入第%d行%d列的元素:",i+1,j+1);
scanf("%d",&arr[i][j]);
}
}
printf("数组的元素分别是:\n");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d\t",arr[i][j]);
}
putchar(10);
}
int max[4]={0};
for (int i = 0; i < 4; i++)
{
max[i]=arr[i][0];
for (int j = 0; j < 3; j++)
{
if(arr[i][j]>max[i])
{
max[i]=arr[i][j];
}
}
printf("第%d行的最大值为:%d",i+1,max[i]);
putchar(10);
}
int temp=0;
for (int i = 0; i < 3; i++)
{
int maxi = i;
for (int j = i + 1; j < 4; j++)
{
if (max[j] < max[maxi])
{
maxi = j;
}
}
if(maxi != i)
{
temp=max[maxi];
max[maxi]=max[i];
max[i]=temp;
}
}
printf("每一行最大值升序排序后为:\n");
for (int i = 0; i < 4; i++)
{
printf("%d\t",max[i]);
}
putchar(10);
return 0;
}
4、提示并输入两个一维整形数组,求这两个数组的交集。
int num1[5]={0};
int num2[5]={0};
int unum[5]={0};
int count=0;
int flag=0;
for (int i = 0; i < 5; i++)
{
printf("请输入第一个数组第%d个元素:",i+1);
scanf("%d",&num1[i]);
}
for (int i = 0; i < 5; i++)
{
printf("请输入第二个数组第%d个元素:",i+1);
scanf("%d",&num2[i]);
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
for (int k = 0; k < count; k++) //判重
{
if(unum[k]==num1[i])
{
flag=1;
break;
}
}
if (num1[i]==num2[j] && flag==0)
{
count++;
unum[count-1]=num1[i];
break;
}
flag=0; //判断初始化
}
}
if(count==0)
{
printf("没有交集\n");
}
else
{
printf("两个数组的交集为:\n");
for (int i = 0; i < count; i++)
{
printf("%d\t",unum[i]);
}
putchar(10);
}
return 0;
}
5、完成注册和登录功能:使用两个一维字符数组存储账户和密码
注册:完成对账号和密码的输入
登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败
#include <stdio.h>
#include<string.h>
int main(int argc, char const *argv[])
{
char ID[20][20]={0};
char password[20][20]={0}; //注册
char ID1[20]="";
char password1[20]="";//登录
char n=0;
int i=0;
while (1)
{
printf("输入1注册,2登录,q退出:");
scanf("%c",&n);
getchar();
if (n=='1')
{
printf("请输入ID:");
scanf("%s",ID[i]);
getchar();
printf("请输入password:");
scanf("%s",password[i]);
getchar();
i++;
}
else if(n=='2')
{
int flag=1;
printf("请输入ID:");
scanf("%s",ID1);
getchar();
printf("请输入password:");
scanf("%s",password1);
getchar();
for (int j = 0; ID[j]!='\0'; j++)
{
if(strcmp(ID[j],ID1)==0)
{
if (strcmp(password[j],password1)==0)
{
flag=0;
break;
}
}
}
if(flag==0)
{
printf("登录成功\n");
}
else if(flag==1)
{
printf("登录失败\n");
}
}
else if (n=='q')
{
break;
}
}
return 0;
}