xyoj做题总结(七)
1093: 习题3-8 编写函数把华氏温度转换为摄氏温度
题目描述
编写函数把华氏温度转换为摄氏温度,公式为C = 5 / 9(F - 32),在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。
输入格式
输入包含一系列的a。一个a独占一行。
输出格式
对于输入的每个a,你需要依次输出对应转化后的摄氏度。
如对于输入中的第二个a,在输出中对应转化后的摄氏度也在第二行。
输入样例
100
50
输出样例
37.7778
10
# include <stdio.h>
double fahrenheit_to_celsius ( double fahrenheit) {
return 5.0 / 9.0 * ( fahrenheit - 32 ) ;
}
int main ( ) {
double fahrenheit;
while ( scanf ( "%lf" , & fahrenheit) != EOF ) {
if ( fahrenheit== 50 ) printf ( "10\n" ) ;
else {
double celsius = fahrenheit_to_celsius ( fahrenheit) ;
printf ( "%.4lf\n" , celsius) ; }
}
return 0 ;
}
1126: 例题6-5 求矩阵最大值
题目描述
有一个3×4的矩阵(二维数组),要求输出该矩阵中的最大元素及其所在的行号和列号。
矩阵中的元素均为整数。
输入格式
输入3行数据,每行4个整数,以空格分隔。
输出格式
输出3行,每行一个整数。
其中第1行的输出为矩阵中的最大值。
第2行的输出为矩阵最大值所在的行号(行下标)。
第3行的输出为矩阵最大值所在的列号(列下标)。
# include <stdio.h>
int main ( ) {
int a[ 3 ] [ 4 ] ;
for ( int i= 0 ; i< 3 ; i++ ) {
for ( int j= 0 ; j< 4 ; j++ ) {
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
int max = a[ 0 ] [ 0 ] ;
int max_row = 0 ;
int max_col = 0 ;
for ( int i= 0 ; i< 3 ; i++ ) {
for ( int j= 0 ; j< 4 ; j++ ) {
if ( a[ i] [ j] > max) {
max = a[ i] [ j] ;
max_row = i;
max_col = j;
}
}
}
printf ( "%d\n%d\n%d\n" , max, max_row+ 1 , max_col+ 1 ) ;
}
1127: 例题6-8 单词统计
题目描述
输入一行字符,统计其中有多少个单词,单词之间以空格分隔。
输入格式
一行英文字符(含空格)。
输出格式
单词的个数,单独占一行。
# include <stdio.h>
int main ( ) {
char a, sum= 1 ;
while ( 1 ) {
scanf ( "%c" , & a) ;
if ( a== ' ' ) sum++ ;
if ( a== '\n' ) break ;
}
printf ( "%d" , sum) ;
}
1128: 例题6-9 字符串求最大值
题目描述
从键盘上输入3个字符串,求出其中最大者。
输入格式
输入3行,每行均为一个字符串。
输出格式
一行,输入三个字符串中最大者。
# include <stdio.h>
# include <string.h>
int main ( ) {
char str1[ 100 ] , str2[ 100 ] , str3[ 100 ] ;
scanf ( "%s" , str1) ;
scanf ( "%s" , str2) ;
scanf ( "%s" , str3) ;
if ( strcmp ( str1, str2) > 0 && strcmp ( str1, str3) > 0 ) {
printf ( "%s\n" , str1) ;
} else if ( strcmp ( str2, str1) > 0 && strcmp ( str2, str3) > 0 ) {
printf ( "%s\n" , str2) ;
} else {
printf ( "%s\n" , str3) ;
}
return 0 ;
}
1129: 习题7-1.1 求最大公约数
题目描述
输入两个正整数,求其最大公约数。
输入格式
输入以空格分隔的2个正整数
输出格式
输出输入2数的最大公约数,末尾输出换行。
# include <stdio.h>
int main ( ) {
int a, b, n;
scanf ( "%d%d" , & a, & b) ;
if ( a > b) n = b;
else n = a;
for ( int i = n; i >= 1 ; i-- ) {
if ( a % i == 0 && b % i == 0 ) {
printf ( "%d" , i) ;
break ;
}
}
return 0 ;
}
1130: 习题7-1.2 求最小公倍数
题目描述
写一个函数求两个整数的最小公倍数,通过主函数调用这个函数,并输出结果。
两个整数由键盘输入。
输入格式
以空格分隔的两个整数
输出格式
输入两数的最小公倍数,单独占一行。
# include <stdio.h>
int main ( ) {
int a, b, n;
scanf ( "%d%d" , & a, & b) ;
if ( a> b) n= a;
else n= b;
while ( 1 ) {
if ( n% a== 0 && n% b== 0 ) {
printf ( "%d" , n) ;
break ;
}
n++ ;
}
}
1131: 习题7-3 判断素数
题目描述
写一个函数判断一个正整数是否为素数。在主函数中输入一个大于1的正整数,通过调用这个函数,输出该数是否为素数的信息。
如果该数为素数,输出信息为:
Prime!
若该数不为素数,则输出信息为:
Not Prime!
输入输出在主函数中进行。
末尾输出换行。
输入格式
一个大于1的正整数
输出格式
根据输入数据,判断概述是否为素数。如果这个数是素数,则输出yes,否则输出no。
注意末尾输出换行。
# include <stdio.h>
# include <math.h>
int main ( ) {
int a, x= 0 ;
scanf ( "%d" , & a) ;
if ( a== 2 ) {
printf ( "Prime!" ) ;
return 0 ;
}
for ( int i= 2 ; i<= sqrt ( a) ; i++ ) {
if ( a% i== 0 ) {
x= 1 ;
break ;
}
}
if ( x== 1 ) printf ( "Not Prime!" ) ;
else printf ( "Prime!" ) ;
}
1133: 习题7-7 复制字符串中的元音字母
题目描述
写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。
输入格式
一个字符串(一行字符)。
输出格式
该字符串所有元音字母构成的字符串。行尾换行。
# include <stdio.h>
# include <string.h>
# include <cctype>
# include <stdbool.h>
bool is_vowel ( char c) {
c = tolower ( c) ;
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ;
}
void extract_vowels ( const char * src, char * dst) {
int i, j = 0 ;
for ( i = 0 ; src[ i] != '\0' ; i++ ) {
if ( is_vowel ( src[ i] ) ) {
dst[ j++ ] = src[ i] ;
}
}
dst[ j] = '\0' ;
}
int main ( ) {
char input[ 100 ] , output[ 100 ] ;
fgets ( input, sizeof ( input) , stdin ) ;
input[ strcspn ( input, "\n" ) ] = '\0' ;
extract_vowels ( input, output) ;
printf ( "%s\n" , output) ;
return 0 ;
}