目的是希望能学到一些东西,查出自己不足!
1.计算表达式的值(字符串型数字加减法)
这题我第一眼看到就直接想将输入的字符串分成两部分,然后都转为int数组,最后将两个数组代表的数字表示出来,在进行加法或者减法操作
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[11] = {0};
char *val[2];
char op ;
int res = 0,i=0 ;
scanf("%s",str);
//start
int a[3];
int b[3];
int suma=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]!='+'&&str[i]!='-')
{
a[i]=str[i]-'0';
suma=suma*10+a[i];
}
else
break;
}
char ch=str[i];
int count=i+1;
int sumb=0;
for(i=count;i<strlen(str);i++)
{
b[i]=str[i]-'0';
sumb=sumb*10+b[i];
}
if(ch=='+')
res=suma+sumb;
else
res=suma-sumb;
//end
printf("%d\n",res);
return 0;
}
2.电子屏数字显示
暴力一对一比较,整就完事,循环跳出可给我头整晕了!!!
#include <stdio.h>
#include <stdlib.h>
char zero[5][6] = { "11111",
"10001",
"10001",
"10001",
"11111" };
char one[5][6] = {"00001",
"00001",
"00001",
"00001",
"00001" };
void getres(char (*disp)[26], char res[])
{ //start
int i,j;
int n=5,count=0;
while(n<=25)
{
char flag='?';
for(i=0;i<5;i++)
{
int k=0;
for(j=n-5;j<n;j++)
{
if(disp[i][j]==zero[i][k])
{
flag='0';
k++;
}
else
{
flag='?';
break;
}
}
if(flag=='?')
break;
}
if(flag!='0')
{
for(i=0;i<5;i++)
{
int k=0;
for(j=n-5;j<n;j++)
{
if(disp[i][j]==one[i][k])
{
flag='1';
k++;
}
else
{
flag='?';
break;
}
}
if(flag=='?')
break;
}
}
res[count]=flag;
count++;
n=n+5;
}
res[count]='\0';
//end
}
int main()
{
char disp[5][26];
char res[6] = {0};
int i ;
for(i = 0; i < 5;i++)
scanf("%s",disp[i]);
getres(disp, res);
printf("%s",res);
return 0;
}
3.标识符判别
从未见过如此这种厚颜无耻、水到极致的题,老夫看到后当场笑得像个孩子
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isChar(char ch)
{
return ch>='a'&& ch<='z'||ch>='A'&& ch<='Z';
}
int isChar_Digit(char ch)
{
return ch>='a'&& ch<='z'|| ch>='A'&& ch<='Z'|| ch>='0'&& ch<='9';
}
int isId(char *s)
{
//start
char ch=s[0];
return isChar(ch);
//end
}
int main()
{
char s[100];
while(scanf("%s",s)!=EOF)
{
if(isId(s))
printf("%s is ID!\n",s);
else
printf("%s is not ID!\n",s);
}
return 0;
}
4.候选人排序
看吧,经典字符串排序老师最爱!会用基本排序算法、会用strcpy和strcmp进行交换比较操作就no problem了!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void candInput(char (*p)[20],int n)
{
int i;
for(i=0;i<n;i++)
{
gets(p[i]);
}
}
void candSort(char (*p)[20],int n)
{
//start
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(p[j],p[i])<0)
{
char *temp=(char*)malloc(sizeof(char)*20);
strcpy(temp,p[j]);
strcpy(p[j],p[i]);
strcpy(p[i],temp);
}
}
}
//end
}
void candOutput(char (*p)[20],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
}
int main()
{
int n;
scanf("%d ",&n);
char cand[100][20];
candInput(cand,n);
candSort(cand,n);
candOutput(cand,n);
return 0;
}
5.停车场车位计数
也是老水题了,我的最爱!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=-1)
{
int a[100][100];
int sum=m*n;
int i,j;
int n1=0,n0=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]>0)
n1++;
else
n0++;
}
}
printf("%d %d %d\n",sum,n1,n0);
}
}
总结一下,经过考试,能明显感觉到自己的代码能力和上学期比是提升了的,俺转专业大二fei狗还得继续加油哇!!!!