第十次作业
1编写程序,统计字符串中大写字母的个数。
#include<stdio.h>
main()
{
char str[20];
int i,cnt;
cnt=i=0;
gets(str);
while(str[i]!='\0')
{
if(str[i]>='A'&&str[i]<='Z')
cnt++;
i++;
}
printf("大写字母个数为:%d\n",cnt);
}

2编写程序,去掉字符串中所有的星号。例如,“****AB**C***DE**FG**”,处理为“ABCDEFG”。
#include<stdio.h>
main()
{
char str[20];
int i,j;
i=j=0;
gets(str);
while(str[i]!='\0')
{
if(str[i]!='8')
str[j++]=str[i];
i++;
}
i=0;
while(i<j)
putchar(str[i++]);
}

3.编写程序,将字符串数组a中的字母复制到字符数组b中,要求每三个字符后插入一个空格。例如,字符数组a:“ABCDEFGHIJK”,字符数组b:“ABC DEF GHI JK”。
#include<stdio.h.>
main()
{
char a[20],b[20];
int i,j;
gets(a);
for(i=j=0;a[i]!='\0';i++)
{
b[j++]=a[i];
if((i+1)%3==0)
b[j++]=' ';
}
b[j]='\0';
puts(b);
}

4输出字符串中位置为奇数、ASCII为偶数的字符。
#include<stdio.h>
main()
{
char str[80];
int i=0;
gets(str);
while(str[i]!='\0')
{
if((i+1)%2==1&&str[i]%2==0)
putchar(str[i]);
i++;
}
}

5.统计字符串中各数字字符的个数。
#include<stdio.h>
main()
{
char str[80];
int cnt[10]={0};
int i=0;
gets(str);
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
cnt[(str[i]-'0')%10]++;
i++;
}
for(i=0;i<=9;i++)
printf("数字字符%d:%d个\n",i,cnt[i]);
}

6
#include<stdio.h>
main()
{
char str[80];
int i=0;
int length=0;
gets(str);
puts(str);
while(str[i++]!='\0')
length++;
printf("字符串的长度为:%d\n",length);
}

十一、.实现一个菜单 可以切换 ,可以返回主菜单
主菜单
1.登录
2.注册
3.输出水仙花数
4.退出程序
请选择:
选择后实现对应的功能
#include<stdio.h>
#include<string.h>
void mainMenu();
void login();
void returnToMain();
void regist();
void shuixianhua();
main()
{
mainMenu();
}
void mainMenu(){
int i;
printf("1.登录");
printf("2.注册");
printf("3.输出水仙花数");
printf("4.退出程序");
scanf("%d",&i);
switch(i){
case 1:
login();
break;
case 2:
regist();
break;
}
}
void login(){
char uname[20],upwd[20];
printf("请输入用户名");
scanf("%s",uname);
printf("请输入密码");
scanf("%s",upwd);
if(strcmp(uname,"admin")==0&&strcmp(upwd,"admin")==0){
printf("登陆成功");
}else{
printf("登录失败");
}
returnToMain();
}
void regist(){
char uname[20],upwd1[20],upwd2[20];
printf("***********欢迎注册***********");
printf("请输入用户名");
scanf("%s",uname);
printf("请输入密码");
scanf("%s",upwd1);
printf("请再次输入密码");
scanf("%s",upwd2);
if(strcmp(upwd1,upwd2)==0){
printf("注册成功");
}else{
printf("注册失败");
}
returnToMain();
}
void shuixianhua(){
printf("153,370,371,407");
returnToMain();
}
void returnToMain(){
char answer[20];
printf("是否返回主菜单?Y/N\n");
scanf("%s",answer);
if(strcmp(answer,"Y")==0)
mainMenu();
else
printf("谢谢使用,再见");
}

2.使用函数,求2个数的最大值,并调用
#include<stdio.h>
int max(int x,int y)
{
int max=0;
if(x<y)
{
max=y;
}
else
{max=x;
}
return max;
}
int main()
{
int a,b,c;
int max(int x,int y);
printf("请输入两个整数\n");
scanf("%d %d",&a,&b);
c=max(a,b);
printf("max=%d",c);
system("pause");
return 0;
}

3.使用递归函数,求阶乘,并调用求5的阶乘
#include<stdio.h>
int jie(int i)
{
if(i==1)
return i;
else
return i*jie(i-1);
}
int main()
{
int i;
i=jie(5);
printf("%d",i);
}

4.使用函数,判断一个年份是不是闰年,如果是闰年返回1,否则返回
#include<stdio.h>
int isRunnian(int year)
{
if(year%400==0||year%4==0&&year%100!=0)
return 1;
return 0;
}
void main()
{
int year;
printf("输入年份,输出1表示该年是闰年,0为非闰年\n");
scanf("%d",&year);
printf("\n%d",isRunnian(year));
}

5.使用函数,求一个数绝对值,并调用.
#include<stdio.h>
int jdz(int x)
{
if(x>=0)
return x;
else return -x;
}
int main()
{
int x;
scanf("%d",&x);
printf("|%d|=%d\n",x,jdz(x));
return 0;
}


浙公网安备 33010602011771号