NEFU2020级大一下学期C语言阶段考参考代码

目的是希望能学到一些东西,查出自己不足!

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狗还得继续加油哇!!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值