/*編寫函數,實現從鍵盤上輸入一個小寫字母,將其轉化為大寫字母。*/ /* #include<stdio.h> int zhuanhua(char s); void main(){ char s; printf("請輸入一個字元:"); scanf("%c",&s); printf("轉化前為:%c ...
/*編寫函數,實現從鍵盤上輸入一個小寫字母,將其轉化為大寫字母。*/
/*
#include<stdio.h>
int zhuanhua(char s);
void main(){
char s;
printf("請輸入一個字元:");
scanf("%c",&s);
printf("轉化前為:%c\n",s);
s=zhuanhua(s);
printf("轉化後為:%c\n",s);
}
int zhuanhua(char s){
char S;
S=s-32;
return S;
}
*/
/*計算並輸出500以內最大的10個能被13或17整除的自然數之和*/
/*
#include<stdio.h>
int jisuan(int n);
void main(){
int n=500;
printf("和是%d\n",jisuan(n));
}
int jisuan(int n){
int i,sum=0;
for(i=1;i<n;i++)
if(i%13==0||i%17==0)
sum+=i;
return sum;
}
*/
/*將字元串str中的小寫字母全部轉換成大寫字元串。函數原型可聲明為:“void
toUpperCase( char str[ ]) ; ”*/
/*
#include <stdio.h>
#include<string.h>
#define N 10
void toUpperCase( char str[ ]);
void main(){
char str[N];
printf("請輸入一個字元串:");
gets(str);
toUpperCase(str);
printf("交換後的字元串為:");
puts(str);
}
void toUpperCase( char str[ ]){
int i;
for(i=0;;i++){
if(str[i]!='\0')
str[i]=str[i]-32;
else
break;
}
}
*/
【編寫函數,將一個字元串的全部有效元素逆置。函數原型可聲明為“void
reverseStr( char * str ) ;”,參數str為指向字元串的指針。】
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void reverseStr( char *str );
int main( )
{
char str[100];
puts(“請輸入字元串:”);
gets(str);
reverseStr( str );
puts(“逆轉後的字元串:”);
puts( str );
return 0;
}
void reverseStr( char *str )
{
char tmp;
char *pi, *pj;
pi = str;
pj = str + strlen( str ) – 1;
while (pi < pj )
{ tmp = *pi; *pi = *pj; *pj = tmp;
++pi; --pj;
}
}
<br/>
【
1)Fill the blanks of the
following program. Function:output
by the character w, such as W-shaped structure into a graphical.
w ww w
w w w w
w w w w
w w w w
ww ww
#include <stdio.h>
void draw(int n)
{
int i, j, k, r, m;
for(i=1; ① ;i++)
{
for(j = 1; j <= 2; j++)
{
for(r = 1; r < i; r++) printf(" ");
printf("w");
for(k = 1; ② ; k++) printf(" ");
printf("w");
for(m = 1; m < i; m++) printf(" ");
}
③ ;
}
}
#include <conio.h>
int main( )
{
int n;
printf("input a number:");
④ ;
draw(n);
return 0;
}
答案:①i <= n;②k<=2*(n-i);③ printf(“\n”);④scanf(“%d”, &n);
<br/>
【
編寫函數,將一個整型數組的全部元素逆序存儲,即若原來數組元素分別為12345,逆序存儲後數組各元素變為54321。函數原型可聲明為“void reverse( int * p , int n
);”,參數p為指向數組的指針,n為數組中的元素個數。
答案:
程式代碼如下:
#include <stdio.h>
void reverse( int *p, int n );
int main( )
{
int arr[10];
int i;
printf(“請輸入10個整數:”);
for(i=0; i<10; i++)
scanf(“%d” , &arr[i]);
reverse ( arr, 10);
printf(“逆序存儲後:”);
for(i=0; i<10; i++)
printf(“%5d” , arr[i]);
printf(“\n”);
return 0;
}
void reverse( int *p, int n )
{
int *pi, *pj;
int tmp;
pi = p;
pj = p + n – 1;
while ( pi < pj )
{
tmp = *pi; *pi = *pj; *pj = tmp;
pi++; pj--;
}
}
<br/>
【
編寫程式,用有參有返回值函數實現判斷三個數是否能構成三角形。函數原型可聲明為:“int isTriangle( double a, double b, double c );”,其中,a,b,c為三角形的三條邊,返回值為0或1,0代表不能構成三角形,1代表能構成三角形。請在主函數中調用該函數完成程式的功能。
答案:
程式代碼如下:
#include <stdio.h>
int isTriangle( double a, double b, double c);//函數聲明
int main( )
{
double ea, eb, ec;//三角形的三條邊
int result; //是否是三角形的判斷結果
printf(“Please input the three edges of a triangle:”);
scanf(“%lf%lf%lf”, &ea, &eb, &ec);
result = isTriangle( ea, eb, ec ); //函數調用
if( 0 == result )
printf(“這組邊長不能構成三角形\n”);
else
printf(“這組邊長可以構成三角形\n”);
return 0;
}
int isTriangle( double a, double b, double c ) //函數定義
{
if( a > 0 && b > 0 && c > 0 && a + b > c
&& b + c > a && c + a > b )
//三角形任意邊長大於0,且 任意兩邊之和大於第三邊
return 1; //可以構成三角形
else
return 0; //不能構成三角形
}
程式運行結果如下:
<br/>
【
(2)Write a program that takes an integer keyed in from the terminal
and extracts and displays each digit of the integer in English. So, if the user
types 932, the program should display “ nine three two”.
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int num;
int iDigit; //每一位上的數字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //當該數不為0時,繼續提取其個位上的數字
{
iDigit = num % 10; //提取個位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉該數的個位
}
printf(“\n”);
return 0;
}
<br/>
rite a program that takes an integer keyed in from the terminal and extracts
and displays each digit of the integer in English. So, if the user types 932,
the program should display “ nine three two”.
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int num;
int iDigit; //每一位上的數字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //當該數不為0時,繼續提取其個位上的數字
{
iDigit = num % 10; //提取個位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉該數的個位
}
printf(“\n”);
return 0;
}
<br />
(2)Write a program that takes an integer keyed in from the terminal
and extracts and displays each digit of the integer in English. So, if the user
types 932, the program should display “ nine three two”.
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int num;
int iDigit; //每一位上的數字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //當該數不為0時,繼續提取其個位上的數字
{
iDigit = num % 10; //提取個位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉該數的個位
}
printf(“\n”);
return 0;
}
(3)Write a function to calculate
the absolute value of x.
答案:
程式代碼如下:
#include <stdio.h>
double absoluteValue( double x );
int main( )
{
double x;
printf(“請輸入x:”);
scanf(“%lf”, &x);
printf(“Absolute Value of x is: %lf\n”, absoluteValue( x ) );
printf(“請輸入x:”);
//第二次調用函數
scanf(“%lf”, &x);
printf(“Absolute Value of x is: %lf\n”, absoluteValue( x ) );
return 0;
}
double absoluteValue( double x )
{
if ( x > 0 )
return x;
else
return - x;
}
(4)從鍵盤輸入10個互不相同的整數,找出其中最小的元素將其與數組中的第一個元進行交換。
答案:
程式代碼如下:
#include <stdio.h>
void getMin( int a[ ], int n); //函數聲明
int main( )
{
int array[10];
int i;
printf(“請輸入10個互不相等的整數:”);
for ( i=0; i<10; ++i)
scanf(“%d”, &array[i]);
getMin( array , 10 ); //調用函數來實現功能
printf(“將最小值換到第1個元素後:”);
for ( i=0; i<10; ++i)
printf(“%5d”, array[i]);
printf(“\n”);
return 0;
}
void getMin( int a[ ], int n) //函數定義
{
int i;
int tmp;
int minid=0;
for( i=1; i<n; ++i)
if ( a [i] < a [minid] )
minid = i;
//將最小值換到第1個元素
tmp = a[0];
a[0] = a[minid];
a[minid] = tmp;
}
(5)有10本圖書,從鍵盤輸入每本圖書的價格後,找出價格最高的圖書並輸出其價格。
答案:
程式代碼如下:
#include <stdio.h>
double getMaxPrice( double a[ ], int n); //函數聲明
int main( )
{
double book[10];
int i;
int maxid;
printf(“請輸入10本圖書的價格:”);
for ( i=0; i<10; ++i)
scanf(“%lf”, &book[i]);
maxid = getMaxPrice ( book , 10 ); //調用函數來實現功能
printf(“最高書價:%.2lf\n”
, book[maxid] );
return 0;
}
double getMaxPrice ( double a[ ], int n) //函數定義
{
int i;
int maxid =0;
for( i=1; i<n; ++i)
if ( a [i] > a [maxid] )
maxid = i;
return maxid;
}
(6)Writing a function to find the minimum subscript of element in an
array ,and return the subscript to the function who calls it.
答案:
程式代碼如下:
#include <stdio.h>
int getMinid( int a[ ], int n); //函數聲明
int main( )
{
int array[10];
int i;
int minid;
printf(“請輸入10個整數:”);
for ( i=0; i<10; ++i)
scanf(“%d”, &array[i]);
minid = getMin( array , 10 ); //調用函數來實現功能
printf(“最小元素的下標:%d\n” ,
minid );
return 0;
}
int getMin( int a[ ], int n) //函數定義
{
int i;
int minid=0;
for( i=1; i<n; ++i)
if ( a [i] < a [minid] )
minid = i;
return minid;
}
>
(7)從鍵盤輸入若幹整數(數據個數應小於20),其值在0至4的範圍內,用-1作為輸入結束的標誌。編程統計輸入的整數個數。
答案:
程式代碼如下:
#include <stdio.h>
int getCount( int a[ ], int n ); //函數聲明
int main( )
{
int array[20] ={0} ; //用來存儲最多20個整數
int c;
c = getCount( array , 20 );
printf(“輸入的有效數的個數為:%d\n”,
c);
return 0;
}
int getCount( int a[ ], int n ) //函數定義
{
int tmp; //臨時存儲輸入的數
int count=0; //輸入的有效數的個數
printf(“請輸入若幹個0-4之間的整數(以一1結束輸入):”);
scanf(“%d” , &tmp);
while ( tmp != -1 && count <20 )
{
if ( tmp >=0 && tmp <=4 ) //在範圍之內
a[ count++] = tmp ; //將值轉存到數組對應元素中
scanf(“%d”, &tmp);//輸入下一個數
}
return count;
}
(8)編寫函數,將一個整型數組的全部元素逆序存儲,即若原來數組元素分別為1,2,3,4,5,逆序存儲後數組各元素變為5,4,3,2,1。函數原型可聲明為:“void reverse( int a[ ] , int n );”,參數a為數組,n為數組中的元素個數。
答案:
程式代碼如下:
#include <stdio.h>
void reverse( int a[ ], int n );
int main( )
{
int array[10]={0};
int i;
printf(“請輸入10個整數:”);
for( i=0; i<10; i++)
scanf(“%d”, &array[i]);
reverse( array, 10); //調用函數逆序存儲數組中的數據
printf(“逆序後的元素為:\n”);
for( i=0; i<10; i++)
printf(“%5d”, array[i]);
printf(“\n”);
return 0;
}
void reverse( int a[ ], int n )
{
int i;
int tmp;
for( i=0; i<n/2; ++i)
{
tmp = a[i]; a[i] = a[n-i-1]; a[n-i-1] = tmp;
}
}
(9)編寫函數,將一個十進位數轉換成一個二進位數(提示:將轉換後的二進位數各位的值依次存儲在一個一維數組中,要輸出時,只要逆序輸出這個數組各元素的值即可)。函數原型可聲明為:“int transformToBin( int dnum, int bin[ ] ) ;”,參數dnum是要轉換的十進位數,bin是存儲轉換後的二進位值的數組(逆序存儲的),返回值是bin數組中元素的個數。
答案:
程式代碼如下:
#include <stdio.h>
int transformToBin( int dnum, int bin[ ] ) ;
int main( )
{
int array[32]={0}; //保存轉換後的二進位數
int num; //待轉換的整數
int cc; //最後得到的二進位總共多少位
printf(“請輸入一個整數:”);
scanf(“%d”, &num);
cc = transformToBin( num, array ); //調用轉換函數
cc--; //往回退一個元素下標,使cc指向最後一個元素
for( ; cc>=0; cc-- ) //輸出轉換後的二進位數
printf(“%d”, array[cc]);
printf(“\n”);
return 0;
}
int transformToBin( int dnum, int bin[ ] )
{
int count = 0;
while ( dnum ) //當dnum還未轉換完畢
{
bin[count++] = dnum % 2; //餘數保留到數組對應元素中
dnum /= 2; //數本身除2
}
return count;
}
(2)假設圓柱的底面積半徑為r(= 2.5),高為h(= 3.5),編寫求體積(體積=底面積*高)的程式。
答案:
假設圓柱的底面積半徑為r(= 2.5),高為h(= 3.5),編寫求體積(體積=底面積*高)的程式。
程式代碼如下:
#include <stdio.h>
#define PI 3.1415926
int main( )
{
double r = 2.5;
double h = 3.5;
double v=0;
v = (PI * r * r)*h;
printf(“v = %lf\n”, v);
return 0;
}
(11)編寫函數,將字元串str中的小寫字母全部轉換成大寫字元串。函數原型可聲明為:“void
toUpperCase( char str[ ]) ; ”。
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void toUpperCase( char str[ ]);
int main( )
{
char str[100];
puts(“請輸入字元串:”);
gets(str);
toUpperCase ( str );
puts(“轉換後的字元串:”);
puts( str );
return 0;
}
void toUpperCase( char str[ ])
{
int i;
i = 0;
while ( str[i] != ‘\0’ )
{
if( str[i] >= ‘a’ && str[i] <= ‘z’ )
str[i] -= 32; //小寫字母轉換成大寫
++i;
}
}
(12)編寫函數,刪除字元串str中的所有ch字元。函數原型可聲明為“void deleteAll( char str[ ] ,
char ch ) ;”,參數str為待處理的字元串,ch為要刪除的字元。
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void deleteAll( char str[ ] , char ch );
int main( )
{
char str[100] , ch ;
puts(“請輸入字元串:”);
gets(str);
printf(“請輸入待刪除的字元:”);
ch = getchar( );
deleteAll ( str , ch );
puts(“刪除之後的字元串:”);
puts( str );
return 0;
}
void deleteAll( char str[ ] , char ch )
{
int oldi; //指向原str的
int newi; //指向刪除ch後的str
oldi = 0 ;
newi = 0;
while ( str[ oldi ] != ‘\0’ )
{
if( str[oldi] != ch ) //不是要刪除的字元
{
str[newi] = str[oldi]; //將其複製到新的字元串中
++newi; //新字元串增長一個元素
}
++oldi; //如果是要刪除的字元,則會預設被跳過
}
str[newi] = '\0'; //新字元串置結束標誌
}
(13)編寫函數,用字元ch2替換字元串str中的字元ch1(註意:要全部都替換掉)。函數原型可聲明為“void
replaceAll( char str[ ], char ch1, char ch2 ) ;”。
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void replaceAll( char str[ ], char ch1, char ch2 );
int main( )
{
char str[100] , ch1 , ch2 ;
puts(“請輸入字元串:”);
gets(str);
printf(“請輸入要被替換的字元及用來替換的字元(中間不要用空格分隔):”);
ch1 = getchar( );
ch2 = getchar( );
replaceAll ( str , ch1, ch2 );
puts(“替換之後的字元串:”);
puts( str );
return 0;
}
void replaceAll( char str[ ], char ch1, char ch2 )
{
int i;
i = 0;
while ( str[i] != ‘\0’ )
{
if( str[i] == ch1 )
str[i] = ch2;
++i;
}
}
(14)編寫程式,統計一個字元串中26個字母出現的次數(不區分大小寫)。函數原型可聲明為:“void
countAlpha (char str[ ], int count[] );”,參數str為待處理的字元串,數組count長度為26,用於存放26個字母出現的次數。
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void countAlpha (char str[ ], int count[] );
int main( )
{
char str[100];
int count[26]={0};
int i;
puts(“請輸入字元串:”);
gets(str);
countAlpha ( str , count );
puts(“統計結果:”);
for( i=0; i<26; ++i) //輸出個數不為0的字母及其個數
if ( count[i] )
printf(“%c------%d\n”, i+’a’, count[i]);
return 0;
}
void countAlpha (char str[ ], int count[] )
{
int i;
i = 0;
while (str[i] != ‘\0’ )
{
if( str[i]>=’a’ && str[i] <= ‘z’)
++count[ str[i] – ‘a’ ];
else if( str[i]>=’A’ && str[i] <= ‘Z’)
++count[ str[i] – ‘A’ ];
++i;
}
}
(1)編寫程式輸出下列圖案 :
*
***
*****
*******
答案:
#include <stdio.h>
int main( )
{
printf(“ *\n”);
printf(“ * * *\n”);
printf(“ * * * * *\n”);
printf(“ * * * * * * *\n”);
return 0;
}
(4).編寫程式,從鍵盤輸入兩個字元分別存放在變數x和y中,要求通過程式交換它們的值。
答案:
編寫程式,從鍵盤輸入兩個字元分別存放在變數x和y中,要求通過程式交換它們的值。
【程式代碼如下:】
#include <stdio.h>
int main( )
{
char x, y;
char tmp;
printf(“Input two characters:”);
scanf(“%c%c”, &x, &y);
printf(“Before swap: x=%c, y=%c\n”, x, y);
tmp = x;
x = y;
y = tmp;
printf(“After swap: x=%c, y=%c\n”, x, y);
return 0;
}
(5)Write a program to evaluate the polynomial shown here: for x =
2.55.
3x3-5x2+6.
答案:
程式代碼如下:
#include <stdio.h>
#include <math.h>
int main( )
{
double a=3, b=-5,c=2;
double x = 2.55;
double root1, root2;
double delt;
delt = b*b – 4*a*c;
root1 = ( -b + sqrt( delt ) ) / (2 * a) ;
root2 = ( -b - sqrt( delt ) ) / (2 * a) ;
printf(“The two roots are:\n”);
printf(“root1 = %lf\n root2 = %lf\n”, root1, root2);
return 0;
}
(1)編寫程式。功能:從讀入的整數數據中,統計大於零的整數個數和小於零的整數個數。用輸入零來結束輸入,程式中用變數i統計大於零的整數個數,用變數j統計小於零的整數個數。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int num; //輸入的整數
int iCount = 0; //大於0的整數的計數變數
int jCount = 0; //小於0的整數的計數變數
printf(“請輸入多個整數:(以0結束輸入)”);
scanf(“%d”, &num);
while ( num ) // while ( num != 0 )
{
if ( num > 0 ) ++iCount;
else if ( num < 0 ) ++jCount;
scanf(“%d”, &num);
}
printf(“大於0的個數:%d\n”, iCount);
printf(“小於0的個數:%d\n”, jCount);
return 0;
}
(2)編寫程式。功能:以每行5個數來輸出300以內能被7或17整除的偶數,並求出其和。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int n; //300以內的數
int count = 0; //滿足條件的數的統計變數
int sum = 0; //求和變數
for( n = 1; n <= 300; ++n)
{
if ( n % 2 == 0 && (n % 7 ==0 || n % 17 == 0) ) //是偶數,且能被7或17整除
{
sum += n; //求和
printf(“%5d”, n);//輸出n值
++count;
if( count % 5 == 0 ) //某行夠5個數了,則換行
printf(“\n”);
}
}
printf(“\n”);
return 0;
}
(3)Write a function called prime that returns 1 if its argument is a
prime number and returns 0 otherwise.
答案:
程式代碼如下:
#include <stdio.h>
#include <math.h>
int prime( int n ); //函數聲明
int main( )
{
int num;
int isPrime;
printf(“Please input an integer:”);
scanf(“%d”, &num);
isPrime = prime( num ); //函數調用
if ( 1 == isPrime )
printf(“ %d is a prime \n” , num);
else
printf(“ %d is not a prime\n” , num );
return 0;
}
int prime( int n ) //函數定義
{
int i;
for( i = 2; i <= sqrt( n ) ; ++i)
if ( n % i == 0 ) break;
if ( i > sqrt ( n ) )
return 1;
else
return 0;
}
(5)編寫程式。功能:計算並輸出500以內最大的10個能被13或17整除的自然數之和。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int n; //500-1之間的整數
int sum = 0; //求和變數
int count = 0; //滿足條件的數的個數
for ( n=500; n>0; --n)
{
if ( n % 13 == 0 || n % 17 == 0 )
{
sum += n;
++count;
if ( count >= 10 ) //有10個滿足條件的整數,提前結束迴圈
break;
}
}
printf(“sum = %d\n”, sum );
return 0;
}
(4)編寫程式。功能:分別求出一批非零整數中的偶數、奇數的平均值,用零作為終止標記。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int n;//整數
int eSum = 0; //奇數的和
int oSum = 0; //偶數的和
int eCount = 0; //奇數的個數
int oCount = 0; //偶數的個數
printf(“請輸入若幹個整數(以0結束輸入):”);
scanf(“%d”, &n);
while ( n ) //當n不為0
{
if ( n % 2 ) //n為奇數
{ eSum += n; ++eCount; }
else //否則, n為偶數
{ oSum += n; ++oCount; }
scanf(“%d”, &n); //輸入下一個整數
}
printf(“奇數平均值:%f\n”,
1.0 * eSum / eCount );
printf(“偶數平均值:%f\n”,
1.0 * oSum / oCount );
return 0;
}
(6)編寫程式。功能:百馬百擔問題:有100匹馬,馱100擔貨,大馬馱三擔,中馬馱2擔,兩匹小馬馱一擔,求大、中、小馬各多少匹?
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int bigHorse, midHorse, littleHorse; //大、中、小馬的數量
for ( bigHorse = 0; bigHorse <= 33; ++bigHorse )
for( midHorse = 0; midHorse <= 50; ++midHorse )
{
littleHorse = 100 – bigHorse – midHorse; //小馬數量
if ( littleHorse % 2 == 0 && (3*bigHorse + 2*midHorse + littleHorse / 2
== 100 ) ) //小馬數量是偶數,且三種馬馱的貨是100擔
printf(“大馬:%d, 中馬:%d, 小馬:%d\n”, bigHorse, midHorse,
littleHorse );
}
return 0;
}
(7)編寫程式。功能:百雞問題:100元買100只雞,公雞一隻5元錢,母雞一隻3元錢,小雞一元錢三隻,求100元錢能買公雞、母雞、小雞各多少只?
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int cock, hen, chick; //公雞、母雞、小雞的數量
for (cock = 0; cock <= 20; ++ cock)
for(hen = 0; hen <= 33; ++ hen)
{
chick = 100 –cock–hen; //小雞數量
if (chick % 3 == 0 && (5* cock + 3* hen + chick / 3 == 100 ) ) //小雞數量是3的倍數,且三種雞的總錢數是100
printf(“公雞:%d, 母雞:%d, 小雞:%d\n”, cock, hen, chick);
}
return 0;
}
(8)編寫程式。功能:在屏幕上用*輸出一個漏斗狀的圖形。
答案:
程式代碼如下:
#include <stdio.h>
void printFunnel( int n); //函數聲明
int main( )
{
int n; //上半部的總行數
printf(“請輸入漏斗上半部的總行數:”);
scanf(“%d”, &n);
printFunnel( n ); //調用函數列印漏斗形
return 0;
}
void printFunnel( int n)
{
int row; //行號
int starCount; // 某行上星號的數量
int spaceCount; //某行上空格的數量
for( row = 1; row <= n; ++row)
{
for( spaceCount = 1; spaceCount <= row – 1 ; ++ spaceCount)
printf(“ “); //列印出某行上星號前的空格
for( starCount = 1; starCount <= 2*( n – row ) + 1; ++starCount
)
printf(“* “); //列印出某行上的所有星號
printf(“\n”); //換行
}
//列印下半部分(可看成一個n-2行的三角形狀)
for( row = 2; row <= n; ++row)
{
for( spaceCount = 1; spaceCount <= n - row ; ++ spaceCount)
printf(“ “); //列印出某行上星號前的空格
for( starCount = 1; starCount <= 2* row - 1; ++starCount )
printf(“* “); //列印出某行上的所有星號
printf(“\n”); //換行
}
}
9)編寫程式。功能:輸出100到1000之間的各位數字之和能被15整除的所有數,輸出時每10個數一行。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int n;//100到1000之間的整數
int tmpn;//臨時存儲n
int sum; //統計n的各位數字之和
int count = 0; //輸出數的個數
for ( n = 100; n <= 1000; ++n )
{
tmpn = n; //將n臨時存儲到tmpn中
sum = 0; //每個n要重新計算各位數字之和
while ( tmpn ) //當tmpn不為0時
{
sum += tmpn % 10;
tmpn /= 10;
}
if ( sum % 15 == 0 ) //如果n滿足指定的條件
{
printf(“%5d”, n); //輸出當前n值
++count;
if ( count % 10 == 0 ) //一行輸出了10個整數,則換行
printf(“\n”);
}
}
printf(“\n”);
return 0;
}
(1)編寫程式,從鍵盤輸入兩個數字字元並分別存放在字元型變數x和y中,要求通過程式將這兩個字元對應的數字相加後輸出。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
char x , y;
printf(“Input two characters:”);
scanf(“%c%c”, &x, &y);
if( x>=’0’&&x<=’9’ && y>=’0’&&y<=’9’ )
printf(“%d \n”, x-'0'+y-'0');
return 0;
}
1)某市不同車牌的計程車3公裡的起步價和計費分別為:夏利7元/公裡,3公裡以外2.1元/公裡;富康8元/公裡,3公裡以外2.4元/公裡;桑塔納9元,3公裡以外2.7元/公裡。編程:從鍵盤輸入乘車的車型及公裡數,輸出應付的車資。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int carType;//車型。1代表夏利;2代表富康;3代表桑塔納
double xiali = 2.1; //每公裡價格
double fukang = 2.4;
double sangtana = 2.7;
double distance; //距離
double totalMoney;//總的收費
printf("請輸入您乘坐的車型:1代表夏利;2代表富康;3代表桑塔納:");
scanf("%d", &carType);
printf("請輸入您乘車的總路程:");
scanf("%lf", &distance);
if( carType == 1)//夏利
{
if( distance < 3 )
totalMoney = 7.0;
else
totalMoney = 7 + xiali * (distance – 3);
}
else if( carType == 2 ) //富康
{
if( distance < 3 )
totalMoney = 8.0;
else
totalMoney = 8 + fukang * (distance – 3);
}
else if( carType == 3 ) //富康
{
if( distance < 3 )
totalMoney = 9.0;
else
totalMoney = 9 + sangtana * (distance – 3);
}
printf("(四捨五入)您的車費為:%.0lf\n",
totalMoney );
return 0;
}
編寫程式,從鍵盤上輸入一個小寫字母,將其轉化為大寫字母。
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
char lower;
printf( “Input a lower alpha:”);
scanf(“%c”, &lower);
if( lower>=’a’ && lower<=’z’ )
printf(“%c \n”, lower - 32);
return 0;
}
(3)編寫函數,將數組s1中的全部奇數都複製到數組s2中。函數原型可聲明為:“int copyTo( int * s1 , int n,
int * s2 ) ; ”,參數s1和s2為指向兩個數組的指針,n為數組s1中元素的個數,返回值為複製完成後s2中元素的個數。
答案:
程式代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int copyTo( int *s1, int n , int *s2 );
int main( )
{
int s1[100], s2[100];
int count; //最終奇數的個數
int i;
srand( time ( NULL ) ); //隨機種子
for ( i = 0; i < 100; ++i ) //避免每次執行程式重覆輸入
s1[i] = rand( ) % 1001 ; //隨機生成0-1000之間的整數
for ( i = 0; i < 100; ++i ) //列印出數組s1元素
printf(“%5d”, s1[i] ) ;
printf(“\n”);
count = copyTo( s1, 100, s2 );
printf(“奇數如下:\n”);
for ( i = 0; i < count; ++i ) //列印出數組s2元素
printf(“%5d”, s2[i] ) ;
printf(“\n”);
return 0;
}
int copyTo( int *s1, int n , int *s2 )
{
int *ps1, *ps2;
ps1 = s1; ps2 = s2;
while ( ps1 < s1 + n )
{
if( *ps1 % 2) //是奇數
*ps2++ = *ps1;
ps1++;
}
return ps2 – s2;
}
6)編寫函數,將字元串中的大寫字母轉換為小寫字母。函數原型可聲明為“void
strToLow( char * str ) ;”,參數str是要轉換的字元串。
答案:
程式代碼如下:
#include <stdio.h>
#include <string.h>
void toLowerCase( char *str);
int main( )
{
char str[100];
puts(“請輸入字元串:”);
gets(str);
toLowerCase ( str );
puts(“轉換後的字元串:”);
puts( str );
return 0;
}
void toLowerCase ( char *str )
{
while ( *str )
{
if(*str >= ‘A’ && *str <= ‘Z’ )
*str += 32; //小寫字母轉換成大寫
++str;
}
}
(2)Write a program that asks the user to type in two integer values
at the terminal. Test these two number to determine if the first is evenly
divisible by the second, and then display an appropriate message at the terminal.
答案:
程式代碼如下:
#include <stdio.h>
int main( )
{
int num1, num2;
printf(“Input two integers:”);
scanf(“%d%d”, &num1, &num2);
if ( 0 == num1 % num2 )
printf(“ %d can be evenly divisible by %d\n”, num1, num2);
else
printf(“ %d can not be evenly divisible by %d\n”, num1, num2);
return 0;
}