首页 > 编程语言 >c语言实用小程序

c语言实用小程序

时间:2024-10-05 21:11:22浏览次数:7  
标签:return 语言 int void 程序 实用 ar 数组 printf

ASCII编码程序:

#include <stdio.h>

Int main(void)

{ char x=?(num); printf(“%c”,x); return 0; }

解码:char x=’?(字符即字母或标点)’; print(“%d”,x);~

//* typesize.c -- 打印类型大小 */

#include <stdio.h> int main(void)

{/* C99为类型大小提供%zd转换说明 */

printf("Type int has a size of %zd bytes.\n",

sizeof(int));

printf("Type char has a size of %zd bytes.\n",

sizeof(char));

printf("Type long has a size of %zd bytes.\n",

sizeof(long));

printf("Type long long has a size of %zd bytes.\n",

sizeof(long long));

printf("Type double has a size of %zd bytes.\n",

sizeof(double));

printf("Type long double has a size of %zd bytes.\n",

sizeof(long double));

return 0;}

递增运算符辅助理解程序:

#include <stdio.h>

int main(void)

{

int a=1,b=1;

int a_post,pre_b;

a_post=a++;

pre_b=++b;

printf("a a_post b pre_b \n");

printf("%1d %5d %5d\n",a,a_post,b,pre_b);

return 0; }

输出结果:a a_post b pre_b:a_post是a递增之前的值,而b_pre是b递增之后的值。

2 1 2 2

a_post = a++; // 后缀:使用a的值后,递增a

b_pre= ++b; // 前缀:使用b的值前,递增b

判断真假示例程序:

#include<stdio.h>

int main(void)

{ int true,false;

true=(10>2);//关系为真的值

false=(10==2);//关系为假的值

printf("true=%d;false=%d",true,false); return 0; }

for循环辅助理解程序:
#include <stdio.h>

int main(void)

{ const int NUMBER = 22;

int count;

for (count = 1; count <= NUMBER; count++)

printf("Be my Valentine!\n"); return 0; }

do while 循环辅助理解程序:

#include <stdio.h>

int main(void)

{ const int secret_code = 13;

int code_entered;

do{ printf("To enter the triskaidekaphobia therapy club,\n");

printf("please enter the secret code number: ");

scanf("%d",&code_entered); }

while (code_entered != secret_code);

printf("Congratulations! You are cured!\n");

return 0; }

ANSI原型声明函数辅助理解程序:

double power(double n, int p);//函数声明

xpow = power(x, exp); // 函数调用???为什么x/exp可以取代n/p

double power(double n, int p) // 函数定义

{double pow = 1;

int i;

for (i = 1; i <= p; i++)

pow *= n;

return pow; // 返回pow的值 }

continue语句辅助理解程序:

const float MIN=0.0f;

const float MAX=100.0f;

float score;

float total=0.0f;

int n=0;

float min=MAX;

float max=MIN;

printf("Enter the first score(q to quit):");

while(scanf("%f",&score)==1)

{

if(score<MIN||score>MAX)

{

printf("%0.1f is an invalid value.Try again:",score);

continue;//跳转至while循环的测试条件

}

printf("Accepting%0.1f:\n",score);

min=(score<min)?score:min;

max=(score>max)?score:max;

total+=score;

n++;

printf("Enter next score(q to quit):");

}

if(n>0)

{

printf("Average of %d scores is %0.1f.\n",n,total/n);

printf("Low=%0.1f,high=%0.1f\n",min,max);

}

else

printf("No valid scores were entered.\n");

return 0;

swich语句辅助理解程序

该表达式是刚输入给 ch的值。然后程序扫描标签(这里指,case 'a' :、case 'b' :等)列表,直到发现一个匹配的值为止。然后程序跳转至那一行。如果没有匹配的标签怎么办?如果有default :标签行,就跳转至该行;否则,程序继续执行在switch后面的语句。break语句在其中让程序离开switch语句,跳至switch语句后面的下一条语句。如果没有break语句,就会从匹配标签开始执行到switch末尾。例如,如果删除该程序中的所有break语句,运行程序后输入d,其交互的输出结果会执行从case 'd':到switch语句末尾的所有语句。

switch (ch)

{

case 'a':

printf("argali, a wild sheep of Asia\n");

break;

case 'b':

printf("babirusa, a wild pig of Malay\n");

break;

case 'c':

printf("coati, racoonlike mammal\n");

break;

case 'd':

printf("desman, aquatic, molelike critter\n");

break;

case 'e':

printf("echidna, the spiny anteater\n");

break;

case 'f':

printf("fisher, brownish marten\n");

break;

default:

printf("That's a stumper!\n"); } /* switch结束 */

重复输入,直到文件结尾程序

#include <stdio.h>

int main(void)

{ int ch;

while ((ch = getchar()) != EOF)

putchar(ch);

return 0; }

变量ch的类型从char变为int,因为char类型的变量只能表示0~255的无符号整数,但是EOF的值是-1。getchar()函数实际返回值的类型是int,所以它可以读取EOF字符。如果实现使用有符号的char类型,也可以把ch声明为char类型。使用该程序进行键盘输入,要设法输入EOF字符。不能只输入字符EOF,也不能只输入-1(输入-1会传送两个字符:一个连字符和一个数字1)。正确的方法是,必须找出当前系统的要求。例如,在大多数UNIX和Linux系统中,在一行开始处按下Ctrl+D会传输文件结尾信号。一些系统把任意位置的Ctrl+Z解释成文件结尾信号。

排除缓冲区换行符影响示例:

while (getchar() != 'y') /* 获取响应,与 y 做对比*/

{

printf("Well, then, is it %d?\n", ++guess);

while (getchar() != '\n')

continue; /* 跳过剩余的输入行 */ }

输出地址的转换说明示例:

pooh = 24;

假设pooh的存储地址是0B76(PC地址通常用十六进制形式表示)。那么,下面的语句:

printf("%d %p\n", pooh, &pooh);

将输出如下内容(%p是输出地址的转换说明):24 0B76

指针辅助理解程序示例:

#include <stdio.h>

void interchange(int * u, int * v);

int main(void)

{int x = 5, y = 10;

printf("Originally x = %d and y = %d.\n", x, y);

interchange(&x, &y); // 把地址发送给函数,该函数传递的不是x和y的值,而是它们的地址。这意味着出现在interchange()原型和定义中的形式参数u和v将把地址作为它们的值。因

此,应把它们声明为指针。

printf("Now x = %d and y = %d.\n", x, y);

return 0; }

void interchange(int * u, int * v)

{int temp;

temp = *u; // temp获得 u 所指向对象的值,u的值是&x,所以u指向x。这意味着用*u即可表示x的值,

*u = *v;

*v = temp; }

数组声明示例:

int main(void)

{ float candy[365]; /* 内含365个float类型元素的数组 */

char code[12]; /*内含12个char类型元素的数组*/

int states[50]; /*内含50个int类型元素的数组 */ ...}

初始化数组程序示例:

int powers[8] = {1,2,4,6,8,16,32,64};

用以逗号分隔的值列表(用花括号括起来)来初始化数组,各值之间用逗号分隔。在逗号和值之间可以使用空格。

数组的数组即多维数组声明示例:

float rain[5][12]; // 内含5个数组元素的数组,每个数组元素内含12个float类型的元素。说明每个元素的类型是float[12],也就是说,rain的每个元素本身都是一个内含12个float类型值的数组。rain[0]是一个数组,那么它的首元素就是 rain[0][0],第 2 个元素是rain[0][1],以此类推。

指针加一辅助理解程序示例:

#include <stdio.h>

#define SIZE 4

int main(void)

{short dates[SIZE];

short * pti;

short index;

double bills[SIZE];

double * ptf;

pti = dates; // 把数组地址赋给指

ptf = bills;

printf("%23s %15s\n", "short", "double");

for (index = 0; index < SIZE; index++)

printf("pointers + %d: %10p %10p\n", index, pti + index, ptf + index);

return 0; }

在C中,指针加1指的是增加一个存储单元。对数组而言,这意味着把加1后的地址是下一个元素的地址,而不是下一个字节的地址。在指针前面使用*运算符可以得到该指针所指向对象的值。指针加1,指针的值递增它所指向类型的大小(以字节为单位)。

dates + 2 == &date[2] // 相同的地址 *(dates + 2) == dates[2] // 相同的值

编写一个处理数组的函数示例:

阐明包含数组元素个数的信息。第一种方法:在函数代码中写上固定的数组大小

int sum(int * ar) // 相应的函数定义,对应的函数原型

{

int i;

int total = 0;

for (i = 0; i < 10; i++) // 假设数组有10个元素

total += ar[i]; // ar[i] 与 *(ar + i) 相同

return total; }

sum()从该参数获得了什么信息?它获得了该数组首元素的地址,知道要在该位置上找出一个整数。

第二种:

int sum(int * ar, int n) // 更通用的方法

{int i;

int total = 0;

for (i = 0; i < n; i++) // 使用 n 个元素

total += ar[i]; // ar[i] 和 *(ar + i) 相同

return total; }

只有在函数原型或函数定义头中,才可以用int ar[]代替int * ar。int *ar形式和int ar[]形式都表示ar是一个指向int的指针。

声明数组形参:因为数组名是该数组首元素的地址,作为实际参数的数组名要求形式参数是一个与之匹配的指针。只有在这种情况下,C才会把int ar[]和int * ar解释成一样。也就是说,ar是指向int的指针。由于函数原型可以省略参数名,所以下面4种原型都是等价的:

int sum(int *ar, int n); int sum(int *, int); int sum(int ar[], int n); int sum(int [], int);

但是,在函数定义中不能省略参数名。下面两种形式的函数定义等价:

int sum(int *ar, int n); int sum(int ar[], int n);

表现字符串的多种方式示例:

#include <stdio.h>

#define MSG "I am a symbolic string constant."

#define MAXLENGTH 81

int main(void)

{char words[MAXLENGTH] = "I am a string in an array.";

const char * pt1 = "Something is pointing at me.";//指针表示法创建字符串

puts("Here are some strings:");

puts(MSG);

puts(words);

puts(pt1);

words[8] = 'p';

puts(words);

return 0; }

自定义输入/输出函数示例:打印字符串,不添加换行符:

#include <stdio.h>

void put1(const char * string)/* 不会改变字符串 */

{while (*string != '\0')

putchar(*string++); }

判断素数:

#include <stdio.h>

#include <stdbool.h>

int main(void)

{

unsigned long num; // 待测试的数

unsigned long div; // 可能的约数

bool isPrime; // 素数标记

printf("Please enter an integer for analysis; ");

printf("Enter q to quit.\n");

while (scanf("%lu", &num) == 1)

{

for (div = 2, isPrime = true; (div * div) <= num; div++)

{

if (num % div == 0)

{

if ((div * div) != num)

printf("%lu is divisible by %lu and %lu.\n",

num, div, num / div);

else

printf("%lu is divisible by %lu.\n",

num, div);

isPrime = false; // 该数不是素数

}

}

if (isPrime)

printf("%lu is prime.\n", num);

printf("Please enter another integer for analysis; ");

printf("Enter q to quit.\n");

}

printf("Bye.\n");

return 0;

}

标签:return,语言,int,void,程序,实用,ar,数组,printf
From: https://www.cnblogs.com/mycrictfchuyin/p/18448492

相关文章

  • c语言模拟实现qsort
    要想模拟首先qsort函数首先我们应该知道这个函数的功能是什么接下来我为大家引入一个列子我们想要实现一组有序数的升序可以通过冒泡排序法思想是 两两相邻元素进行比较 代码如下 通过冒泡排序法 #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>voidbubbl......
  • springboot+vue基于的电商购物系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代社会不可或缺的一部分。电子商务不仅改变了人们的购物方式,还极大地推动了全球经济的发展。近年来,电商平台如雨后春笋般涌现,市场竞争日益激烈。为了在激烈的市场竞争中脱颖而出,电商平台需要......
  • springboot+vue基于SpringBoot的经典诗文学习平台【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,传统文化的学习与传播方式正经历着深刻的变革。经典诗文作为中华文化的瑰宝,承载着千年的智慧与情感,对于提升国民文化素养、增强民族认同感具有重要意义。然而,传统的学习方式如翻阅纸质书籍、参加诗词讲座等,在时......
  • java+vue计算机毕设防疫工作人员管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球公共卫生事件的频发,防疫工作已成为维护社会稳定和人民健康的关键环节。防疫工作人员作为抗击疫情的前线力量,其管理和调度直接关系到疫情防控......
  • java+vue计算机毕设房屋出租管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人口流动性的增强,房屋租赁市场日益繁荣,成为解决居民居住需求的重要途径。然而,传统的房屋出租管理方式存在诸多不便,如信息不透......
  • 重新定义记忆:语言模型中的概念抹除
    在这个快速发展的AI时代,人们越来越关注如何让机器学习模型具备更好的道德和安全性。尤其是在语言模型(LanguageModels,LMs)方面,如何有效地抹除有害或敏感的概念知识,已成为一个令人瞩目的研究课题。本文将围绕RohitGandikota等人提出的“语言记忆抹除”(ErasureofLanguageM......
  • TensorFlow-图像深度学习实用手册-全-
    TensorFlow图像深度学习实用手册(全)零、前言TensorFlow是谷歌广受欢迎的机器学习和深度学习产品。它已经迅速成为一种流行的工具选择,用于执行快速、高效和准确的深度学习任务。本书向您展示了现实世界项目的实际实现,教您如何利用TensorFlow的功能来执行高效的深度学习。在本......
  • 分享一些新手小白找副业的实用技巧
    在如今的社会中,越来越多的人渴望通过副业来增加收入、拓展技能或者实现自我价值。对于新手小白来说,找到合适的副业并非易事,但通过一些实用的技巧和方法,可以大大提高成功的几率。其中,利用群资源是一个非常有效的途径。一、认识群资源的价值群,作为一种社交和信息交流的平台,蕴含......
  • Python语言中程序运行错误和异常处理
    '''Python捕获异常:一旦发生异常,程序就会终止,这是非常糟糕的事情,这种糟糕体现在两方面1.即便发生了异常,业务上可以忽略它,那么程序应当继续执行2.程序终止,使得异常的信息没有被保留下来,不利于问题的分析和总结为了提高程序的健壮性和解决问题,可以将异常捕获,根据业务......
  • 【VMware VCF】使用 SoS 实用程序检查 VCF 环境的运行状态以及收集相关组件的日志信息
    VMwareCloudFoundation解决方案中有一个叫SupportabilityandServiceability(VMwareCloudFoundationPart03:准备Excel参数表。”。同样,这个SoS程序也可以在SDDCManager虚拟机中使用,并且具有更多实用的功能,比如在VCF环境中运行状态检查以及收集相关组件的日志等,下......