补题报告
函数题
用b[0]计算字母的个数,b[1]计算数字的个数,b[2]计算空格的个数,用b[3]计入其他字符的个数
void fun(char s[],int b[])
{
int i=0;
while(1)
{
if(s[i]=='\0')
break;
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
{
b[0]++;
}
else if(s[i]>='0'&&s[i]<='9')
{
b[1]++;
}
else if(s[i]==' ')
{
b[2]++;
}
else
{
b[3]++;
}
i++;
}}
先算出矩阵每个单元的和,然后在求出对角线,最后一行,最后一列的和,再用总的减去它。
int sumMatrix(int a[][N])
{
int sum=0,i,j,s=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i==j||i==N-1||j==N-1)
sum+=a[i][j];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
s+=a[i][j];
}
}
return s-sum;
}
编程题
用下标表示菜品编号,用数组的值表示投票数
#include<stdio.h>
int main()
{
int n,a,i;
scanf("%d",&n);
int b[1001]={0};
while(scanf("%d",&a)!=EOF)
{
b[a]++;
}
int max=1;
for(i=2;i<=n;i++)
{
if(b[max]<b[i])
{
max=i;
}
}
for(i=1;i<=n;i++)
{
if(b[max]==b[i])
{
printf("%d %d\n",i,b[i]);
}
}
return 0;
}
先用一个数组储存除了前n个以外的其他的值,再把刚刚的前n个值储存在这个数组后面。
#include<stdio.h>
#include<string.h>
int main()
{
char s[101];
int n,i=0;
scanf("%c",&s[i]);
while(s[i]!='\n')
{
i++;
scanf("%c",&s[i]);
}
s[i]='\0';
scanf("%d",&n);
int y=0;
char tan[101];
n%=strlen(s);
for(i=n;i<strlen(s);i++)
{
tan[y]=s[i];
y++;
}
tan[y]='\0';
int g=0;
for(i=y;i<y+n;i++)
{
tan[i]=s[g];
g++;
}
tan[i]='\0';
printf("%s",tan);
return 0;
}
先打印外面那一层,然后在逐层往里面打印
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
int i=0,j=n-1,p=1;
int x=0,y=n-1;
int f=n;
while(p<=f*f)
{
for(i;i<=y;i++)
{
a[i][j]=p;
p++;
}
i--;
j--;
for(j;j>=x;j--)
{
a[i][j]=p;
p++;
}
i--;
j++;
for(i;i>=x;i--)
{
a[i][j]=p;
p++;
}
j++;
i++;
for(j;j<y;j++)
{
a[i][j]=p;
p++;
}
i++;
j--;
n--;
x++;
y--;
}
for(i=0;i<f;i++)
{
for(j=0;j<f;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}