以下题目是由老师布置的《 谭浩强C程序设计(第四版)》的oj第四次练习题,共五道
使用软件是Devc++5.11。
希望大家抄了作业顺手点个赞,谢谢,爱宁
题目描述
输入:第一行为一个正整数n(1<=n<10)。后边是n行,为nXn个整数矩阵,整数间均以一个空格分隔。要求计算并输出该数组的每行每列之和。
输出格式如下所示,每个整数包含符号占五位,右对齐,两个数之间隔一个空格。行末无空格。测试用例保证所有整数可以用int型存储。
输入样例
3
1 2 3
-4 -5 -6
7 8 9
输出样例
1 2 3 6
-4 -5 -6 -15
7 8 9 24
4 5 6
#include
int main()
{int n,a[10][10],hangsum[10],liesum[10],i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{hangsum[i]=a[i][0];
for(j=1;j<n;j++)
hangsum[i]=hangsum[i]+a[i][j];
a[i][n]=hangsum[i];
}
for(j=0;j<n;j++)
{liesum[j]=a[0][j];
for(i=1;i<n;i++)
liesum[j]=liesum[j]+a[i][j];
}
for(i=0;i<n;i++)
{for(j=0;j<n+1;j++)
printf(" %d",a[i][j]);//投机:如果他不让最后有空格就把空格放前面,最前面有空格一般没关系。
printf("\n");
} for(j=0;j<n;j++)
printf(" %d",liesum[j]);
return 0;
}
题目描述
输入:第一行为一个整数n(0
输入样例
2
1 Hello
2 World
2
输出样例
World
#include
int main()
{
char s[100][21];
int i,n,k,a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%s",&a[i],s[i]);
scanf("%d",&k);
for(i=0;i<n;i++)
if(a[i]==k)printf("%s\n",s[i]);
return 0;
}
题目描述
X公司最近研究出了一种新的编码方式,这种编码是将一串大写字母转化为数字。下面是每个字母所代表的数字。
B, F, P, V 代表 1
C, G, J, K, Q, S, X, Z 代表 2。
D , T 代表 3
L 代表 4
M , N 代表 5
R 代表 6。
另外字母A, E, I, O, U, H, W,Y不代表任何数字。你需要将每个字母转化为所代表的数字,但注意,如果连续几个字母都代表同一个数字,那么你只需要转化成一个数字就可以。比如PF,P和F都代表1,所以你只需要输出一个1,而不是两个1。不代表数字的字母不用转化
输入格式
第一行为整数T(0
为T行,每行对应输入的T行测试数据,为该行测试数据的字符串转化后的数字编码,如果没有任何编码,则输出一个空行。
输入样例
3
KHAWN
PFISTER
BOBBY
输出样例
25
1236
11
# include
int main()
{
int n,i,j,b=0,a[10][21]={};//关键在数组后面这个中括号!!!!
char str[10][21];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);//读入第i行字符串
for(j=0;(str[i][j]!='\0');j++)
{
if(str[i][j]=='B'||str[i][j]=='V'||str[i][j]=='F'||str[i][j]=='P')
b=1;
else
{
if(str[i][j]=='C'||str[i][j]=='G'||str[i][j]=='J'||str[i][j]=='K'||str[i][j]=='Q'||str[i][j]=='S'||str[i][j]=='X'||str[i][j]=='Z')//C, G, J, K, Q, S, X, Z 代表 2。
b=2;
else
{
if(str[i][j]=='D'||str[i][j]=='T')
b=3;
else
{
if(str[i][j]=='L')
b=4;
else
{
if(str[i][j]=='M'||str[i][j]=='N')
b=5;
else
{
if(str[i][j]=='R')
b=6;
else
{
if(str[i][j]=='A'||str[i][j]=='E'||str[i][j]=='I'||str[i][j]=='O'||str[i][j]=='U'||str[i][j]=='H'||str[i][j]=='W'||str[i][j]=='Y')//A, E, I, O, U, H, W,Y
b=0;
}
}
}
}
}
}
a[i][j]=b;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<21;j++)
{
if(a[i][j]!=0&&a[i][j]!=a[i][j+1])
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}
题目描述
输入为一个二进制大整数(大整数大于0,不带符号,无前导0,至少1位数字,且不超过100位数字)。要求将该整数转换成十进制数,并输出。
建议:用字符数组存储大整数。
输入样例
1001001100101100000001011010010
输出样例
1234567890
#include
int main( void )
{
char bin[101];
scanf( "%s", bin );
unsigned long long dec[2] = { 0, 0 }; // base 10^18
for( const char* p=bin; *p; ++p )
{
dec[1] = dec[0]*2/1000000000000000000 + dec[1]*2;
dec[0] = dec[0]*2%1000000000000000000 + (*p-'0');
}
if( dec[1] != 0 )
printf( "%llu%018llu\n", dec[1], dec[0] );
else
printf( "%llu\n", dec[0] );
}
题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。请写一个程序来找出范围[a,b] (5≤a≤b≤100000)间的所有回文质数。
输入:只有一行,为两个整数,依次代表a,b 。
输出:每个回文质数输出一行。测试用例保证输入合法且输出至少包含一个回文质数。
输入样例
100 200
输出样例
101
131
151
181
191
#include
#include
bool c[10000000];
int main(){
int k,j,a,b,i;
scanf("%d%d",&a,&b);
if (b>9999999) b=9999999;
for (i=2;i<=int (sqrt(b));i++)
if (!c[i])
for (j=i*i;j<=b;j=j+i)
c[j]=1;
for (i=a;i<=b;i++){
k=i;j=0;
while (k){
j=j*10+k%10;
k=k/10;
}
if ((!c[i])&&(i==j))
printf("%d\n",i);
}
return 0;
}
(日常拖更,宝贝们加油oj)