xtu-c语言考试复习-3

1214

#include
#include

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int a,b,ans;
		scanf("%d+%d=%d",&a,&b,&ans);
		
		int k=1;
		int cnt1=0;
		bool flag=false;
		for(int i=0;i<=9;i++)
		{
			if(a*k+b==ans)	
			{
				printf("%d\n",cnt1);
				flag=true;
				break;
			}
			k=k*10;
			cnt1++;
		}
		
		if(!flag)
		{
			k=1;
			cnt1=0;
			for(int i=0;i<=9;i++)
			{
				if(b*k+a==ans)
				{
					printf("-%d\n",cnt1);
					flag=true;
					break;
				}
				k=k*10;
				cnt1++;
			}
		}
	}
	
	return 0;
}

有点担心做不出来,幸好还算顺利,做出来了

1054

有点奇怪,感觉思路很简单,但是WA,代码如下

#include

#define N 1010

int a[N],b[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		if(n==0)	break;
		
		//想起来以前自己被循环输入整到崩溃哈哈
		
		for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
		for(int i=1;i<=n;i++)	b[i]=a[i];
		
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(a[i]*a[i]==b[j])
				{
					cnt++;
					//printf("%d*%d==%d\n",a[i],a[i],b[j]);
				}
			}
		}
		
		for(int i=1;i<=n;i++)
		{
			if(a[i]==1||a[i]==0)	cnt++;
		}
		
		printf("%d\n",cnt);
	}
	
	return 0;
}

发现是因为数据范围原因,两个数字相乘的结果超出了int的数据范围,但是为什么不特判一下0和1呢,不是很理解,下面这个代码还是过不了,不知道原因

#include

#define N 1010

long long a[N],b[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		if(n==0)	break;
		
		//想起来以前自己被循环输入整到崩溃哈哈
		
		for(int i=1;i<=n;i++)	scanf("%lld",&a[i]);
		for(int i=1;i<=n;i++)	b[i]=a[i];
		
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(a[i]*a[i]==b[j]&&a[i]!=0&&a[i]!=0)
				{
					cnt++;
					//printf("%d*%d==%d\n",a[i],a[i],b[j]);
				}
			}
		}
		
		for(int i=1;i<=n;i++)
		{
			if(a[i]==1||a[i]==0)	cnt++;
		}
		
		printf("%d\n",cnt);
	}
	
	return 0;
}

下面这个代码可以过

#include

#define N 1010

long long a[N],b[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		if(n==0)	break;
		
		//想起来以前自己被循环输入整到崩溃哈哈
		
		for(int i=1;i<=n;i++)	scanf("%lld",&a[i]);
		for(int i=1;i<=n;i++)	b[i]=a[i];
		
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(a[i]*a[i]==b[j])
				{
					cnt++;
					//printf("%d*%d==%d\n",a[i],a[i],b[j]);
				}
			}
		}
		
//		for(int i=1;i<=n;i++)
//		{
//			if(a[i]==1||a[i]==0)	cnt++;
//		}
		
		printf("%d\n",cnt);
	}
	
	return 0;
}

1097

#include

#define N 1010

int a[N];

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n;
		scanf("%d",&n);
		char s[2];
		scanf("%s",s);
		
		for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
		
		for(int i=1;i<=n;i++)
		{
			for(int j=i+1;j<=n;j++)
			{
				if(a[i]>a[j])
				{
					int temp=a[i];
					a[i]=a[j];
					a[j]=temp;
				}
			}
		}
		
		if(s[0]=='A')	
		{
			for(int i=1;i<=n-1;i++)	printf("%d ",a[i]);
			printf("%d\n",a[n]);
		}
		else
		{
			for(int i=n;i>=2;i--)	printf("%d ",a[i]);
			printf("%d\n",a[1]);
		}
	}
	
	return 0;
}

冒泡排序+输出的格式,丝滑流畅~

1148

#include

#define mod 2013//也许是2013年出的题目
#define N 110

int a[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		if(n==0)	break;
		
		for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
		
		for(int j=1;j<=n-1;j++)
		{
			for(int i=1;i<=n-j;i++)
			{
				a[i]+=a[i+1];
				a[i]%=mod;
			}
		}
		
		printf("%d\n",a[1]);
	}
	
	return 0;
}

1256

#include
#include

int min(int a,int b,int c)
{
	int ans=a;
	if(b<ans)	ans=b;
	if(c<ans)	ans=c;
	
	return ans;
}

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		char s[1010];
		scanf("%s",s);
		
		int cnt_x=0,cnt_t=0,cnt_u=0;
		int len=strlen(s);
		for(int i=0;i<len;i++)
		{
			if(s[i]=='X')	cnt_x++;
			if(s[i]=='T')	cnt_t++;
			if(s[i]=='U')	cnt_u++;
		}
		
		int ans=min(cnt_x,cnt_t,cnt_u);
		printf("%d\n",ans);
	}
	
	return 0;
}


1260

#include
#include
#include

int cnt[30];

int main()
{
	char s[1010];
	while(~scanf("%s",s))
	{
		int len=strlen(s);
		for(int i=0;i<len;i++)
		{
			if(s[i]>='a'&&s[i]<='z')
			{
				s[i]-='a'-'A';//全部转变为大写字母
			}
		}
		
		for(int i=0;i<len;i++)
		{
			cnt[s[i]-'A']++;
		}
		
		bool flag=true;
		for(int i=0;i<26;i++)
		{
			if(cnt[i]==0)
			{
				puts("No");
				flag=false;
				break;
			}
		}
		
		if(flag)	puts("Yes");
		
		memset(cnt,0,sizeof cnt);
	}
	
	return 0;
}

每次交题好紧张,咋回事……

你可能感兴趣的:(#,温故知新,c语言,算法,图论)