利用控制台程序发送邮件(C#发送邮件)
控制台程序发送邮件C#
前段时间闲的蛋疼,突然想辞掉工作去济南追高中喜欢很久的一个位漂亮女同学(本人在无锡)。之前因为被她拒绝过很多次,搞的我很内伤。为了不想再次受打击,或者尽量减少我心灵的创伤。就写了这个小程序。这个小程序最主要的目的是问一些我想问的问题,然后再把她回答的答案发到我指定邮箱里。时间过了很久了,不管最后结果怎么样,把这些简单的东西拿出来分享一下。
OK,少扯淡,分享程序:
1.程序首先先判断电脑是否联网,因为要把问卷答案发送到指定邮箱里,所以电脑必须连
上互联网。
2.进入调查页面
3.把结果发到指定邮箱里
4.原理:我利用QQ邮箱的SMTP服务器,把邮件发到我指定的邮箱(就相当于我用qq邮
箱向指定邮箱发了一封邮件)。所以你需要用的发件箱必须开启SMTP服务:
这是qq邮箱设置SMTP服务的截图:
5.程序截图:
6.收到邮件截图:
7.程序源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using https://www.360docs.net/doc/645605873.html,;
using https://www.360docs.net/doc/645605873.html,.Mime;
using https://www.360docs.net/doc/645605873.html,.Mail;
namespace MyLove_shaoyd
{
class Program
{
protected static SmtpClient SmtpClients = null; //设置SMTP协议
protected static MailAddress MailAddress_from = null; //设置发信人地址当然还需要密码
protected static MailAddress MailAddress_to = null; //设置收信人地址不需要密码
protected static MailMessage MailMessage_Mai = null;
protected static List
protected static https://www.360docs.net/doc/645605873.html,workInformation.Ping ping = new
https://www.360docs.net/doc/645605873.html,workInformation.Ping();
protected static https://www.360docs.net/doc/645605873.html,workInformation.PingReply res;
static void Main(string[] args)
{
if (HasNet())
{
Console.WriteLine("======★=★=★==★★★调查问卷
★★★==★=★=★========\n\n");
Console.WriteLine("这是个调查问卷!下面开始吧!请认真回答哦
O(∩_∩)O~\n");
Console.WriteLine("★有些话我虽然问了好多遍,但是我总是.........,最近要打算去济南了,我不知道你是怎么想的,再去济南之前我需要向你了解一些问题。你是否想回答我的问题?\n A:想 B:不想");
Jump: string str1 = Console.ReadLine();
if (str1.ToUpper() == "A")
{
qustion();
//Console.ReadLine();
}
else if (str1.ToUpper() == "B")
{
Console.WriteLine("我已经自动退出啦!!Oo>_ Console.ReadLine(); } else { Console.WriteLine("请输入正确选项哦!"); goto Jump; } } else { Console.WriteLine("无网络连接!程序无法正常运行!"); Console.ReadLine(); } } /// ///判断用户电脑是否有网络连接 /// /// protected static bool HasNet() { try { res = ping.Send("https://www.360docs.net/doc/645605873.html,");//这里相当于在cmd里面ping一下新浪的IP if (res.Status == https://www.360docs.net/doc/645605873.html,workInformation.IPStatus.Success) { return true; } else { return false; } } catch { return false; } } /// ///肯定后回答的问题 /// protected static void qustion() { Console.WriteLine("★好的那么现在开始:我想我如果去找你的话,那么我必须弄清以下几个问题:"); jumpa: Console.WriteLine("1.你有没有男朋友呢?这是一个很重要很重要的问题,如果你已经有男朋友,那么我想我去济南,也就完全没有意义了\n A:有 B:没有 C:不确定D:不想做了"); jump: string anserOne = Console.ReadLine(); if (Judge(anserOne)) { answer.Add(anserOne); if (anserOne == "A" || anserOne == "a") { Console.WriteLine("确定吗?(Y/N)"); if (Console.ReadLine().ToUpper() == "Y") { SendEmail(answer); Console.WriteLine("抱歉!我对你还有一丝幻想!只能说明我很喜欢你,你是我最喜欢的女人,不能和你在一起将是我一生最大的遗憾!::>_<::,那么我想或许我去济南也只是我的梦罢了。"); } else { goto jumpa; } //SendEmail();发送反馈邮件 } else { jump0: Console.WriteLine("2.几个月后,我将会出现在济南。你觉得我们有没 有可能会走在一起呢?\n A:有 B:没有 C:不确定 D:不想做了"); jump1: string anserTwo = Console.ReadLine(); if (Judge(anserTwo)) { answer.Add(anserTwo); if (anserTwo == "A") Console.WriteLine("\n很难相信你会这么认为,我感觉我全身充满了力量,我立马去济南,然后努力创造我们的未来!!"); else if (anserTwo == "B") Console.WriteLine("\n虽然你认为我们没有可能会走到一起,但是我觉得,我会努力让你喜欢上我。可否给我一些时间,在我去济南一开始相处的时间里:\n(1).如果你觉得我还可以,那么你可以再继续考察我一段时间,这段时间我不做限定,可以是很久,也可以是很短;观察好了,注意拿定,你做决定\n(2).如果你觉得我不适合你的话,那么你可以直接把我Pass掉,我无怨无悔。\n(3).如果你觉得我不错,那么你就把我收留了吧!O(∩_∩)O~ 我会努力创造我们自己的幸福!"); else Console.WriteLine("\n最然你不确定,但是请相信我,也请给我一些时间,在这段时间里我会去济南,在济南一开始的日子里:\n(1).如果你觉得我还可以,那么你可以再继续考察我一段时间,这段时间我不做限定,可以是很久,也可以是很短;观察好了,注意拿定,你做决定\n(2).如果你觉得我不适合你的话,那么你可以直接把我Pass掉,我无怨无悔。\n(3).如果你觉得我不错,那么你就把我收留了吧!O(∩_∩)O~ 我会努力创造我们自己的幸福!\n\n"); Console.WriteLine("谢谢你回答我的问题哦,也别怪我这么客气,下面你有什么想话想留给我吗?如果有那就写在下面吧(写好按回车键哦,如果输入法不行,那么请用英文吧):"); string anserThree = Console.ReadLine(); answer.Add(anserThree); SendEmail(answer); Console.WriteLine("======★=★=★==★★★送给你哦 ★★★==★=★=★========"); Console.WriteLine(" * * * *"); Console.WriteLine(" * * * * "); Console.WriteLine(" * ★ * ★ *"); Console.WriteLine(" * ★ * "); Console.WriteLine(" >>>------I love you! ---->"); Console.WriteLine(" * * "); Console.WriteLine(" * ★ * "); Console.WriteLine(" * * "); Console.WriteLine(" * * "); Console.WriteLine(" * "); Console.WriteLine("======★=★=★==程序结束按任意键退出 ==★=★=★========"); Console.ReadLine(); } else if (anserTwo.ToUpper() == "D") { Console.WriteLine("确定吗?(Y/N)"); if (Console.ReadLine().ToUpper() == "Y") { Console.WriteLine("我已经自动退出啦!!Oo>_ Console.ReadLine(); } else { goto jump0; } } else { Console.WriteLine("请输入正确选项哦!"); goto jump1; } } } else if (anserOne.ToUpper() == "D") { Console.WriteLine("确定吗?(Y/N)"); if (Console.ReadLine().ToUpper() == "Y") { Console.WriteLine("我已经自动退出啦!!Oo>_ Console.ReadLine(); } else { goto jumpa; } } else { Console.WriteLine("请输入正确选项哦!"); goto jump; } Console.ReadLine(); } /// ///判断选项是否正确 /// /// /// protected static bool Judge(string stritem) { if (stritem.ToUpper() == "A" || stritem.ToUpper() == "B" || stritem.ToUpper() == "C") return true; else return false; } /// ///发送调查结果 /// protected static void SendEmail(List { MailMessage_Mai = new MailMessage(); try { //初始化Smtp服务器信息 setSmtpClient("https://www.360docs.net/doc/645605873.html,", 25); } catch (Exception Ex) { Console.WriteLine("邮件发送失败,请确定SMTP服务名是否正确!"+ "\n"+ "技术信息: \n" + Ex.Message, "错误"); return; } try { //验证发件邮箱地址和密码这里输入你发件箱的邮箱账号和密码(这里你可以把密码加密一下,可以保证你邮箱的安全) setAddressform("[你的发件箱账号]", "[你的发件箱密码]"); } catch (Exception Ex) { Console.WriteLine("邮件发送失败,请确定发件邮箱地址和密码的正确性!" + "\n" + "技术信息:\n" + Ex.Message); return; } //清空历史发送信息以防发送时收件人收到的错误信息(收件人列表会不断重复) //MailMessage_Mai.To.Clear(); //添加收件人邮箱地址这里填写收件箱地址 MailAddress_to = new MailAddress("menkoler2009@https://www.360docs.net/doc/645605873.html,"); //MailMessage_Mai.To. MailMessage_Mai.To.Add(MailAddress_to); //发件人邮箱 MailMessage_Mai.From = MailAddress_from; //邮件主题 MailMessage_Mai.Subject = "爱的调查(Rita)"; MailMessage_Mai.SubjectEncoding = System.Text.Encoding.UTF8; //邮件正文 string content = " 调查问卷\n"; if (Contentlst.Count == 1) content = "1.你有没有男朋友呢?答案:有(噩耗)\n ~~~~~~~%>_<%~~~~~~"; else content = "1.你有没有男朋友呢?答案:" + Contentlst[0] + "\n 2.几个 月后,我将会出现在济南。你觉得我们有没有可能会走在一起呢?答案:"+ Contentlst[1] + "\n 3.我想对你说的话:" + Contentlst[2]+"\n --@shaoyd \n \n\n"; MailMessage_Mai.Body = content; MailMessage_Mai.BodyEncoding = System.Text.Encoding.UTF8; //清空历史附件以防附件重复发送 MailMessage_Mai.Attachments.Clear(); try { SmtpClients.Send(MailMessage_Mai); } catch (Exception ex) { Console.WriteLine("邮件发送失败!失败原因:" + ex.Message); } Console.WriteLine("我已经将结果通过邮件反馈给我的主人啦!"); } #region设置Smtp服务器信息 /// ///设置Smtp服务器信息 /// ///SMTP服务名 ///端口号 private static void setSmtpClient(string ServerHost, int Port) { SmtpClients = new SmtpClient(); SmtpClients.Host = "https://www.360docs.net/doc/645605873.html,";//指定SMTP服务名例如QQ邮箱为 https://www.360docs.net/doc/645605873.html, 新浪cn邮箱为 https://www.360docs.net/doc/645605873.html,等 SmtpClients.Port = 25; //指定端口号 SmtpClients.Timeout = 2; //超时时间 } #endregion #region验证发件人信息 /// ///验证发件人信息 /// ///发件邮箱地址 ///邮箱密码 private static void setAddressform(string MailAddress, string MailPwd) { //创建服务器认证 NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd); //实例化发件人地址例如:Rita 将出现邮件中发件人的位置 MailAddress_from = new https://www.360docs.net/doc/645605873.html,.Mail.MailAddress(MailAddress, "Rita"); //指定发件人信息包括邮箱地址和邮箱密码 SmtpClients.Credentials = new https://www.360docs.net/doc/645605873.html,workCredential(MailAddress_from.Address, MailPwd); } #endregion } } 如果有什么不懂的地方或者想要源程序的话,请发邮件至menkoler2009@https://www.360docs.net/doc/645605873.html,我会及时将源程序发给你。 献丑了,我这个悲剧男,好囧哇~ 习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); } B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障 1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max {char #include 控制台窗口界面编程控制 〇、摘要 一、概述 二、控制台文本窗口的一般控制步骤 三、控制台窗口操作 四、文本属性操作 五、文本输出 六、文本操作示例 七、滚动和移动 八、光标操作 九、读取键盘信息 十、读取鼠标信息 十一、结语 补充篇--经典程序(Internet资源) 摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用 Visual C++已越来越被众多学习者所接受。显然,现今如果还再把TC作为开发环境的话,不仅没有必要,而且也不利于向Windows应用程序开发的过渡。然而,Visual C++的C++专用库却没有TC所支持的文本屏幕(控制台窗口)控制函数(相应的头文件是conio.h)。这必然给C++学习者在文本界面设计和编程上带来诸多不便。要知道,文本界面设计是一种深入学习C++、掌握交互系统的实现方法的最简单的一种手段,它不像C++的Windows图形界面应用程序,涉及知识过多。为此,本系列文章来讨论在Visual C++ 6.0开发环境中,如何编写具有美观清晰的控制台窗口界面的C++应用程序。 (一)概述操作 所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦控制台应用程序在Windows操作系统中运行后,就会弹出一个窗口。例如下列代码: #include 第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束 5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab' 4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0 C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); 一个多线程的windows控制台应用程序 一、要求: 编写一个单进程、多线程的windows控制台应用程序。 二、平台: Window XP C# 三、内容: 每个进程都有分配给它的一个或多个线程。线程是一个程序的执行部分。 操作系统把极短的一段时间轮流分配给多个线程。时间段的长度依赖于操作系统和处理器。 每个进程都开始一个默认的线程,但是能从它的线程池中创建一个新的线程。 线程是允许进行并行计算的一个抽象概念:在一个线程完成计算任务的同时,另一个线程可以对图像进行更新,两个线程可同时处理同一个进程发出的两个网络请求。 如图所示,选择操作: 1、创建和启动一个线程。在一个进程中同时教和运行两个线程,并且可以不需要停止或者释放一个线程。 相关代码及其解释: public class Threading1:Object { public static void startup() { //创建一个线程数组 Thread[] threads=new Thread[2]; for(int count=0;count public static void Count() { for(int count=1;count<=9;count++) Console.Write(count+" "); } } 输出结果: 这里通过new方法创建了两个线程,然后使用start()方法来启动线程,两个线程的作用是:两个线程同时从1数到9,并将结果打印出来。 运行上面的程序代码时,可能会在控制台上输出多种不同的结果。从123456789123456789到112233445566778899或121233445566778989在内的各种情况都是可能出现的,输出结果可能与操作系统的调度方式有关。 2、停止线程。当创建一个线程后,可以通过多种属性方法判断该线程是否处于活动状态,启动和停止一个线程等。相关代码及其解释: public class MyAlpha { //下面创建的方法是在线程启动的时候的时候调用 public void Beta() { while(true) { Console.WriteLine("MyAlpha.Beta is running in its own thread."); } } } public class Simple { public static int Stop() { Console.WriteLine("Thread Start/Stop/Join"); MyAlpha TestAlpha=new MyAlpha(); //创建一个线程对象 Thread MyThread=new Thread(new ThreadStart(TestAlpha.Beta)); //开起一个线程 MyThread.Start(); while(!MyThread.IsAlive); C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include 全国2009年10月高等教育自学考试 C++程序设计试题 课程代码:04737 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.对C++中主函数描述正确的是( ) A.名称为main,可为多个 B.名称不限,可为多个 C.名称为main,必须有且只能有一个 D.名称不限,必须有且只能有一个 2.调用声明为int result(int a,int b)的函数时,正确的方法是( ) A.result(1,2) B.result(1) C.result(0.1,0.3) D.result(1,2,3) 3.用于包含C++标准库iostream的预处理指令是( ) A.#define 《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 教材习题答案 第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题 1. 判断条件 2. 面向过程编程 3. 结构化 4. 程序 5. 面向对象的程序设计语言 6. 基本功能操作、控制结构 7. 有穷性 8. 直到型循环结构 9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分 习题 一、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题 1. 主 2. C编译系统 3. 函数、函数 4. 输入输出 5. 头 6. .OBJ 7. 库函数 8. 文本 第三章 习题 一、单项选择题 1. D 2. B 3. A 5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题 1. 补码 2. 308 10 - ± ~)308 10 ,15 —6 2. 308 10 - ± (~)308 10 ,15 6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或 b ( 题目有错 , 小括号后面的 c<=98 改成( c>=97&&c<=98 )就可以得到所给的答案了) 7. 8. 65 , 89 第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B 7. A 8. C 9. B 10.B 二、填空题 1. 一 复习 一、C#控制台应用程序的组成 (1)导入系统预定义元素部分 C#依赖许多系统预定义元素,为了在程序中能够使用这些预定义元素,需要对这些元素进行导入。 控制台应用程序使用下述代码导入对其他命名空间的引用: using System; using System.Collections.Generic; using System.Linq; using System.Text; (2)命名空间 关键字namespace和命名空间标识符(命名空间名字)构建用户命名空间,空间的范围用一对花括号限定。 namespace Hello { } 默认情况下命名空间名与解决方案名相同 (3)类 类必须包含在某个命名空间中,使用关键字class和类标识符(类名)构建类,类的范围使用一对花括号限定。 class Program { } (4)主方法 应用程序都有一个执行的入口用以指明程序执行的开始点。 C#应用程序中的入口点用主方法标识,名为Main(),后面括号即使没有参数也不能省略。 一个C#应用程序必须有、而且只能有一个Main()方法,如果一个应用程序仅由一个方法构成,这个方法名字就只能为Main()。 主方法用一对花括号限定自己的区域,如下所示: static void Main(string[] args) { } (5)方法中的C#代码 二、类 三、举例 输入两个数ab,计算其和存入sum namespace add { class Program { static void Main(string[] args) { int a, b, sum; a = int.Parse(Console.ReadLine()); sum = a + b; Console.WriteLine("{0}+{1}={2}",a,b,sum); } } } 第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII) [VC++]控制台程序窗口隐藏 HWND hWnd; SetConsoleTITle("HEHE"); hWnd=::FindWindow(NULL,"HEHE"); ShowWindow(hWnd,SW_HIDE); 当创建一个控制台程序时,又不想看到其窗口可用如下代码解决: #ifdef NDEBUG #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #endif 首先来看一下linker的 /subsystem 选项该选项的语法形式如下: /SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER| EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE} [,major[.minor]] 这个链接选项告诉操作系统如何运行可执行文件CONSOLE: win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似DOS窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序 Extensible Firmware Interface和CPU具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.如果对此有兴趣的可以访问intel主页来查看相关内容 NATIVE; 设备驱动器选项,如果/DRIVER:WDM选项被设定的话,该链接选项(NATIVE)就为默认选项 POSIX: 在windows NT 种运行在POSIX子系统上的应用程序 WINDOWS: 该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之就是一个标准的Win32 application,其入口地址为WinMain()函数或者wWinMain ()函数的地址如果你在应用程序种定义的主函数为WinMain或者wWinMain,在默认情况下该应用程序就是一个Win32 Application ! WINDOWSCE: 运行在windows CE上的应用程序 major and minor (optional): 主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数 从上面可以看出如果我们建立一个win32 console application的话,linker的 /subsystem选项应该为CONSOLE,可以在VC开发环境的project->setting->link->project option中看到! 接下来我们再看看应用程序是如何运行的! 我们知道用VC编写的程序,运行的时候是需要 C\C++运行库支持的.当我们运行一个 C/C++程序的时候链接器会首先寻找应用程序的启动函数,例如: 如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式 /subsystem:"console" /entry:"mainCRTStartup" (ANSI) 单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 自动取款机(ATM)模拟程序 一、需求 我们需要设计一个具备如下功能的ATM模拟程序。 ●开户:用户能够通过ATM来开设帐号,开户需要设置密码。 ●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。 ●管理帐号:用户登录到帐号上后,能够进行如下的操作。 ■存款:将指定的款项存到帐号中。 ■取款:从帐号中取出指定的款项。 ■查询余额:查询帐号的余额。 ■修改密码:修改帐号的密码。 二、分析 面向对象编程的第一步是进行面向对象分析。面向对象分析的目标是建立问题领域的模型,包括如下模型。 ●功能模型:即画出每一个功能要求的用例图。 ●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对 象、对象的属性、对象间的关系。 ●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写 作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。1.功能模型 根据我们的需求,可以很容易地画出A TM模拟程序的用例图: 可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。要管理账号,就必须首先登录帐号或者开户。管理帐号的功能包括存款、取款、查询余额和修改密码。 2.对象模型 ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。此外,需要一个程序来启动ATM。因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。 1)帐号类Account 帐号类Account包含所有的帐号信息负责所有的帐号操作。基本的帐号信息包括: ●帐号名name ●帐号密码password ●帐号余额balance 主要的帐号操作包括: ●登录Login ●存款Deposit ●取款Withdraw ●查询余额Get_Balance ●修改密码ChangePassword 2)银行类Bank 银行类Bank的本质就是一组帐号的组合,并负责管理帐号。基本的银行信息包括: ●银行名name ●已经开户的帐号数usedAccountNum ●可以容纳的最大账户数MaxAccountNum ●帐号集accounts 主要的银行操作包括: ●开户OpenAccount ●登录帐号LoginAccount ●撤销帐号,但是由于A TM不能撤销帐号,因此我们不关心这个操作 3)ATM类 ATM类与银行类之间在一对一的关联关系,ATM提供用户界面,并将用户的请求提交给银行、将银行的反馈提交给用户。基本的ATM信息包括: ●银行Bank 主要的ATM操作包括: ●启动Start ●开户OpenAccount ●登录帐号LoginAccount ●管理帐号ManageAccount ●一些显示不同信息的辅助操作(PrintLogo、Print、Pause等)。 4)启动程序类Program 启动程序类Program的唯一功能就是创建银行类和ATM类的实例,并将它们关联起来,然后启动ATM(执行A TM对象的Start方法)。因此,这个类仅仅包含程序的入口点Main方法。 5)ATM模拟程序的类图 根据上述各类的分析,可以画出A TM模拟程序的类图:c语言程序设计试题答案
C语言程序设计第三版谭浩强课后习题答案完整版
C语言控制台窗口界面编程(修正版)
C语言程序设计期末考试选择题题库
C语言程序设计第三版习题库答案
一个多线程的windows控制台应用程序
C语言程序设计期末考试试题(含答案)
c语言程序设计期末试题B(含答案)
04737c程序设计试题及答案20200_图文
C语言程序设计模拟试题1附答案
C语言程序设计教程第三版(李凤霞)习题答案
讲义---C#控制台应用程序的组成
C语言程序设计试题集及其答案
C语言程序设计试题集与答案解析
C语言程序设计第三版谭浩强课后习题答案完整版
控制台程序窗口隐藏
C语言程序设计试题集及答案
自动取款机(ATM)模拟程序(C#控制台应用程序)