將字符串從小寫轉換爲大寫
在下面的程序中,將要求用戶輸入小寫的String,然後程序會將其轉換爲大寫的String。程序中遵循的邏輯:所有小寫字母(a-z)的ASCII值均在97至122之間,而其相應的大寫字母(A-Z)的ASCII值均比其小32。例如,“ a”的ASCII值爲97,而“ A”的ASCII值爲65(97-32)。其他字母也一樣。基於此邏輯,編寫了以下C程序進行轉換。
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char str[128];
int i;
printf("Enter the string:");
scanf("%s",str);
for (i = 0; i <= strlen(str);i++){
if(str[i] >= 97 && str[i] <= 122)
str[i] = str[i] - 32;
}
printf("\nUpper Case String is : %s",str);
printf("\n");
return 0;
}
編譯輸出:
顯示用戶輸入的字符的ASCII的值
ASCII值將英文字符表示爲數字,每個字母分配有一個0到127之間的數字。例如:
#include <stdio.h>
int main(int argc, char const *argv[]){
char ch;
printf("Enter any character:");
scanf("%c", &ch);
/*
使用格式說明符,我們可以獲得ASCII碼
個字符。當我們將%d格式說明符用於
char變量,然後顯示char的ASCII值
*/
printf("ASCII value of character %c is: %d", ch, ch);
printf("\n");
return 0;
}
編譯輸出:
使用指針查找最大數量
在下面的程序中,我們有三個整數num1,num2和num3。我們已分配這三個數字的地址,以三分p1,p2和p3分別。我們使用if else語句對存儲在指針所指向的地址處的值進行了比較。
#include <stdio.h>
int main(int argc, char const *argv[]){
int num1, num2, num3;
int *p1, *p2, *p3;
printf("Enter First Number: ");
scanf("%d",&num1);
printf("Enter Second Number: ");
scanf("%d",&num2);
printf("Enter Third Number: ");
scanf("%d",&num3);
//將輸入數字的地址分配給指針
p1 = &num1;
p2 = &num2;
p3 = &num3;
if(*p1 > *p2){
if(*p1 > *p3){
printf("%d is the largest number", *p1);
}
else{
printf("%d is the largest number", *p3);
}
}
else{
if(*p2 > *p3){
printf("%d is the largest number", *p2);
}
else{
printf("%d is the largest number", *p3);
}
}
printf("\n");
return 0;
}
編譯輸出:
檢查數字是否爲迴文
如果數字保持不變,即使我們反轉其數字,該數字也稱爲迴文數。例如12321是迴文數,因爲如果我們反轉其數字,它將保持不變。
#include<stdio.h>
int check_palindrome(int num){
static int reverse_num=0,rem;
if(num!=0){
rem=num%10;
reverse_num=reverse_num*10+rem;
check_palindrome(num/10);
}
return reverse_num;
}
int main(){
int num, reverse_num;
printf("Enter a number: ");
scanf("%d",&num);
reverse_num = check_palindrome(num);
if(num==reverse_num)
printf("%d is a palindrome number",num);
else
printf("%d is not a palindrome number",num);
printf("\n");
return 0;
}
編譯輸出:
檢查元音或輔音
#include <stdio.h>
#include <stdbool.h>
int main(){
char ch;
bool isVowel = false;
printf("Enter an alphabet: ");
scanf("%c",&ch);
if(ch=='a'||ch=='A'||ch=='e'||ch=='E'||ch=='i'||ch=='I'
||ch=='o'||ch=='O'||ch=='u'||ch=='U')
{
isVowel = true;
}
if (isVowel == true)
printf("%c is a Vowel", ch);
else
printf("%c is a Consonant", ch);
printf("\n");
return 0;
}
編譯輸出:
使用遞歸反轉字符串
#include <stdio.h>
#include <string.h>
void reverse_string(char*, int, int);
int main(){
char string_array[150]; //此數組最多可容納150個
printf("Enter any string:");
scanf("%s", &string_array);
//調用我們用戶定義的函數
reverse_string(string_array, 0, strlen(string_array)-1);
printf("\nReversed String is: %s",string_array);
printf("\n");
return 0;
}
void reverse_string(char *x, int start, int end)
{
char ch;
if (start >= end)
return;
ch = *(x+start);
*(x+start) = *(x+end);
*(x+end) = ch;
reverse_string(x, ++start, --end);
}
編譯輸出:
使用遞歸的數組元素的總和
#include<stdio.h>
int sum_array_elements( int arr[], int n );
int main(){
int array[] = {1,2,3,4,5,6,7};
int sum;
sum = sum_array_elements(array,6);
printf("\nSum of array elements is:%d",sum);
printf("\n");
return 0;
}
int sum_array_elements( int arr[], int n ) {
if (n < 0) {
return 0;
} else{
return arr[n] + sum_array_elements(arr, n-1);
}
}
編譯輸出:
使用指針的數組元素的總和
#include<stdio.h>
int main(){
int array[5];
int i,sum=0;
int *ptr;
printf("\nEnter array elements (5 integer values):");
for(i=0;i<5;i++)
scanf("%d",&array[i]);
/*
array = &array[0] */
ptr = array;
for(i=0;i<5;i++)
{
//*ptr 指地址
sum = sum + *ptr;
ptr++;
}
printf("\nThe sum is: %d",sum);
printf("\n");
return 0;
}
編譯輸出:
以升序排列數字
下面的程序提示用戶輸入n個數字,一旦用戶輸入完這些數字,該程序將對其進行排序並以升序顯示。
#include<stdio.h>
void sort_numbers_ascending(int number[], int count){
int temp, i, j, k;
for (j = 0; j < count; ++j){
for (k = j + 1; k < count; ++k){
if (number[j] > number[k]){
temp = number[j];
number[j] = number[k];
number[k] = temp;
}
}
}
printf("Numbers in ascending order:\n");
for (i = 0; i < count; ++i)
printf("%d\n", number[i]);
}
int main(){
int i, count, number[20];
printf("How many numbers you are gonna enter:");
scanf("%d", &count);
printf("\nEnter the numbers one by one:");
for (i = 0; i < count; ++i)
scanf("%d", &number[i]);
sort_numbers_ascending(number, count);
return 0;
}
編譯輸出:
二進制轉換爲十進制
創建了一個用戶定義的函數,binaryToDecimal()用於從二進制到十進制的轉換。該程序將二進制數(由用戶輸入)作爲輸入,並使用函數將其轉換爲十進制數。
#include <stdio.h>
#include <math.h>
int binaryToDecimal(long binarynum){
int decimalnum = 0, temp = 0, remainder;
while (binarynum!=0){
remainder = binarynum % 10;
binarynum = binarynum / 10;
decimalnum = decimalnum + remainder*pow(2,temp);
temp++;
}
return decimalnum;
}
int main(){
long binarynum;
printf("Enter a binary number: ");
scanf("%ld", &binarynum);
printf("Equivalent decimal number is: %d", binaryToDecimal(binarynum));
printf("\n");
return 0;
};
編譯輸出:
歡迎關注公衆號【程序猿編碼】,添加本人微信號(17865354792),回覆:領取學習資料。進入技術交流羣。網盤資料有如下: