将字符串从小写转换为大写
在下面的程序中,将要求用户输入小写的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),回复:领取学习资料。进入技术交流群。网盘资料有如下: